关于requests Post方式上传文件

背景

前两天需要调用一个接口,使用post方式上传文件。于是使用Python的requests进行发送post请求,但是一直报服务器500的错误,感觉很纳闷,折磨我好久之后才注意到之前使用的post请求只是携带一些字段,而这次是需要向接口上传文件。

步骤

先这样,,,再这样,,,嗯,解决了,先说一下post请求四种传送正文的方式;

POST请求四种传递正文的方式

(1)请求正文是application/x-www-form-urlencoded

最常见的POST提交数据的方式,浏览器的原生form表单,如果不设置enctype属性,那么最终就会以application/x-www-form-urlencoded方式提交数据。

(2)multipart/form-data

上传文件的表单

(3)application/json

用来告诉服务器消息主体是序列化之后的JSON字符串。

(4)text/xml

它是一种使用HTTP作为传输协议,XML作为编码方式的远程调用规范。

解决

以上我使用最多的是application/json形式,本次需要讲的是第二种;
我使用postman上传文件成功,导出python 的代码,但是上传后文件为空,多番修改后无效,就弃用;

附上代码:

def upload_image(cover_path):
    url = "http://api-xxx-xxx"
    headers ={
        'Authorization':'xxxxxxx',
    }

    files = {'file': open(cover_path,'rb')}
    try:
        r = requests.post(url=url,files=files,headers=headers).text
        imageUrl = json.loads(r)['result']
        if imageUrl != None:
            imageUrl = imageUrl[0]
    except Exception as e:
        print(e)
     

最主要:files = {‘file’: open(cover_path,‘rb’)}

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值