遇到了一个问题,使用requests进行转发 requests响应流的时候,出现各种问题,问题的描述没有记录,不过Debug以下终于解决了问题。。。。。。。下面简单的描述解决方案

response = _RequestUtil.post_request_server("upload", data={
"blockByteSize": imageBuffer.nbytes,
"currentBlockIndex": 0,
"id": data["id"]
}, files={
"multipartFile": imageBuffer
})
表单中的请求参数放到data中,文件数据放到files字典中

requests的属性files会通过判断几个类型进而决定是否携带数据流

for field, val in fields:  # 这个for语句决定data字典中的属性
if isinstance(val, basestring) or not hasattr(val, '__iter__'):
val = [val]
for v in val:
if v is not None:
# Don't call str() on bytestrings: in Py3 it all goes wrong.
if not isinstance(v, bytes):
v = str(v) new_fields.append(
(field.decode('utf-8') if isinstance(field, bytes) else field,
v.encode('utf-8') if isinstance(v, str) else v)) for (k, v) in files: # 这个files决定了你传的files属性的值,进行遍历
# support for explicit filename
ft = None
fh = None
if isinstance(v, (tuple, list)): # 判断你传的元组的个数,选择不同的行为
if len(v) == 2:
fn, fp = v
elif len(v) == 3:
fn, fp, ft = v
else:
fn, fp, ft, fh = v
else:
fn = guess_filename(v) or k
fp = v if isinstance(fp, (str, bytes, bytearray)): # 这里是文件对象的关键之处,当files的键对应的值是以下时,会携带上的
fdata = fp
elif hasattr(fp, 'read'): # 这里也就是判断以下对应的值对象是否包含read方法
fdata = fp.read()
elif fp is None:
continue
else:
fdata = fp


       rf = RequestField(name=k, data=fdata, filename=fn, headers=fh) # 最终文件对象会打包成 RequestField 对象
       rf.make_multipart(content_type=ft)

       # new_fields 这个是最终保存所有字段的列表对象
       new_fields.append(rf)
 
 如有疑问,留言讨论

requests库获取图片响应流进行转发的更多相关文章

  1. 从0开始学爬虫11之使用requests库下载图片

    从0开始学爬虫11之使用requests库下载图片 # coding=utf-8 import requests def download_imgage(): ''' demo: 下载图片 ''' h ...

  2. C#远程获取图片文件流的方法【很通用】

    因为之前写的代码,也能获取到图片流信息,但是会是凌乱的线条,后百度得这个方法,必须记录一下 C# try { WebRequest myrequest = WebRequest.Create(Http ...

  3. requests库获取响应流进行转发

    遇到了一个问题,使用requests进行转发 requests响应流的时候,出现各种问题,问题的描述没有记录,不过Debug以下终于解决了问题.......下面简单的描述解决方案 response = ...

  4. requests库下载图片的方法

    方法: 传入图片url,requests.get()方法请求一下,将源码以二进制的形式写在本地即可. 以前一直以为requests库中有特定的方法获取图片,类似urllib.request.urlre ...

  5. php canvas 前端JS压缩,获取图片二进制流数据并上传

    <?php if(isset($_GET['upload']) && $_GET['upload'] == 'img'){ //二进制数据流 $data = file_get_c ...

  6. [python爬虫]Requests-BeautifulSoup-Re库方案--Requests库介绍

    [根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写  文章中部分图片来自老师PPT 慕课链接:https://www.icourse163.org/learn/BIT-10018 ...

  7. python爬虫之requests库

    在python爬虫中,要想获取url的原网页,就要用到众所周知的强大好用的requests库,在2018年python文档年度总结中,requests库使用率排行第一,接下来就开始简单的使用reque ...

  8. 浅析requests库响应对象的text和content属性

    在做爬虫时请求网页的requests库是必不可少的,我们常常会用到 res = resquests.get(url) 方法,在获取网页的html代码时常常使用res的text属性: html = re ...

  9. 4.爬虫 requests库讲解 GET请求 POST请求 响应

    requests库相比于urllib库更好用!!! 0.各种请求方式 import requests requests.post('http://httpbin.org/post') requests ...

随机推荐

  1. 如何利用Smartbi做数据分析:2018内5月热销乘用车分析报告

    在2018年第一季度热销乘用车分析报告中,SUV以总体销量15.4%的同比增长率让人不可小觑,Smartbi刚得到5月分析的数据就迫不及待的来看看是否热度不减,结果在5月这个所谓汽车销售淡季,轿车以9 ...

  2. 第一次打开pycharm运行python文件报错”No Python interpreter selected“问题的解决办法

    前面没有细讲,这里细述一下安装pycharm后,第一次打开pycharm运行python文件报错"No Python interpreter selected"问题的解决办法. 出 ...

  3. yaml文件学习笔记

    01 介绍 YAML 是 "YAML Ain't Markup Language" 的递归缩写.在开发的这种语言时,YAML 的意思其实是:"Yet Another Ma ...

  4. Qt:QCoreApplication

    0.说明 QCoreApplication提供了有关当前运行程序的相关信息,当前程序应当是非GUI程序.对于GUI程序,应该用QGuiApplication,而对于采用了Qt Widget模块的程序, ...

  5. MySQL:Win10系统中设置默认编码为UTF-8

    Win10 系统下 Mysql 字符集(utf8)的设置 补充: 在[mysqld]下添加语句:init_connect='SET collation_connection = utf8_unicod ...

  6. 惨,给Go提的代码被批麻了

    hello大家好,我是小楼. 不知道大家还记不记得我上次找到了一个Go的Benchmark执行会超时的Bug?就是这篇文章<我好像发现了一个Go的Bug?>. 之后我就向Go提交了一个PR ...

  7. linux tr命令实现windows文本格式与linux文本格式间的转换

    tr 命令 转换和删除字符 选项: -d --delete:删除字符 -s --squeeze-repeats:把连续重复的字符以一个字符表示,即去重 -c –C --complement:取字符集的 ...

  8. 微信小程序下拉框实现

    小程序中是没有直接的下拉框标签可以使用的,所以下拉框需要手动写,或者使用框架 因为考虑到下拉框展开的时候,可能需要遮挡住其余的样式,这里就用的cover-view标签.(不考虑遮挡的可以换成普通的vi ...

  9. think php 7天免登录

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. CodeGym-17~20

    读文章 0.如果是基本数据类型的话,在数组中就存储特定的值:如果是对象的话,在数组中就是存储对象的引用. 1.数组本身就是对象 再读文章 0.Arrays.sort(array); Arrays.to ...