python分片上传_python各种post上传文件

1、带证书上传文件

filename = '/tmp/test.cert'

hash_v = 'assumethisisahash'

#这是一种流式上传的方式

with open(filename, 'rb') as f:

....requests.post(link, data={'hash': hash_v}, files={'filename':f}, verify='/tmp/test.cert')

2、最简单的流式上传

with open('massive-body') as f:

requests.post('http://some.url/streamed', data=f)

3、块编码请求

def gen():

yield 'hi'

yield 'there'

requests.post('http://some.url/chunked', data=gen())

其他内容可参见:http://www.ziliao1.com/Article/Show/05534046411C9B8866742DE312F126CB.html

4、复杂的流式上传,为了兼容中文文件,还对文件名称中途做了一个replace替换

def get_content_code(url, res_path, encoded_name, file_name):

with open(res_path, 'rb') as f_:

m = MultipartEncoder(

fields={'file': (encoded_name, f_,

'application/octet-stream')}

)

utils.logger.info('body:{},encoded_name:{},file_name:{}'.format(m,encoded_name,file_name))

decoded_m = m.to_string()

decoded_m=decoded_m.replace(encoded_name, file_name)

utils.logger.info('decoded_m:{}'.format(decoded_m))

utils.logger.info('url:{}'.format(url))

response = requests.post(url,

data=decoded_m,

headers={'Content-Type': m.content_type,

'charset': 'UTF-8'})

utils.logger.info('content: {}'.format(response.content))

try:

content = json.loads(response.content)

except ValueError:

content = response.content

return content, response.status_code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值