Python2.7下基于Requests库实现带文件上传与Auth头的HTTP POST请求
我来帮你搞定这个问题!既然你已经在Postman里跑通了流程,把逻辑搬到Python2.7里其实没那么复杂,大概率是Postman生成的代码没考虑Python2.7的兼容细节,或者你没注意到版本适配的问题。
先给你直接上能用的代码,再拆解关键细节:
# 先确保安装兼容Python2.7的requests版本,2.27.1是最后支持Python2.7的版本 # 执行安装命令:pip install requests==2.27.1 import requests # 替换成你的目标API地址 target_url = "https://your-api-endpoint.com/upload" # 替换成你Postman里用的Authorization值,比如"Bearer xxxxxxx"或其他格式 auth_token = "Your-Authorization-Value-Here" # 替换成你的本地图片文件路径 image_path = "/path/to/your/target-image.jpg" # 构造请求头,只保留Authorization即可,其他headers requests会自动处理 headers = { "Authorization": auth_token } # 用with语句自动管理文件资源,避免手动关闭的麻烦 with open(image_path, 'rb') as image_file: # 构造form-data的文件参数,元组结构是(文件名, 文件对象, 图片MIME类型) files = { "input_image": (image_path.split('/')[-1], image_file, "image/jpeg") } # 发起POST请求 response = requests.post(target_url, headers=headers, files=files) # 查看响应结果(Python2.7里print是语句而非函数,注意语法) print "响应状态码:", response.status_code print "响应内容:", response.text
关键细节解释:
- requests版本适配:Python2.7已停止维护,新版本requests(3.x及以上)不再支持它,必须安装
2.27.1这个兼容版本,不然会直接报错。 - 文件打开模式:一定要用
rb(二进制只读)模式打开图片,否则上传的文件会损坏,这是Postman生成代码可能没特意强调的点。 - form-data构造:
files字典里的input_image对应一个元组,其中文件名可以自定义,但建议和原文件名保持一致;MIME类型要匹配图片格式,比如png用image/png,jpg用image/jpeg。 - 请求头处理:只需要传入你需要的
Authorization即可,Content-Type: multipart/form-data这类头requests会自动根据files参数生成,手动添加反而可能引发格式冲突。
Postman生成代码的常见坑:
Postman生成的代码有时会自动添加多余的请求头(比如手动指定Content-Type),或者用了Python3的语法(比如print()函数而非语句),这些在Python2.7里都会触发错误,照着上面的代码写就能避开这些问题。
内容的提问来源于stack exchange,提问作者waas1919
相关产品推荐
相关产品推荐

