gpt4 book ai didi

Python Rest客户端api上传文件

转载 作者:行者123 更新时间:2023-12-01 01:30:02 25 4
gpt4 key购买 nike

我正在使用Python 2.7。我的 Rest 服务器端 API 工作正常,我可以使用 Postman 上传 zip 文件。我正在尝试使用 Rest 客户端 api 上传 zip 文件。我尝试了请求包,但无法发送文件。我收到错误:缺少文件参数。

这是我的 python 服务器端代码:

@ns.route('/upload_file', strict_slashes=False)
class Upload(Resource):
@api.expect(upload_parser)
def post(self):

args = upload_parser.parse_args()
file_nameup = args.file.filename

这是其余的 api 客户端代码:

import requests
from requests.auth import HTTPBasicAuth
import json

headers={'Username': 'abc@gmail.com', 'apikey':'123-e01b', 'Content-Type':'application/zip'}
f = open('C:/Users/ADMIN/Downloads/abc.zip', 'rb')

files = {"file": f}

resp = requests.post("https://.../analytics/upload_file", files=files, headers=headers )

print resp.text

print "status code " + str(resp.status_code)

if resp.status_code == 200:
print ("Success")
print resp.json()
else:
print ("Failure")

这是我的错误: {“message”:“输入有效负载验证失败”,“errors”:{“file”:“缺少必需的 上传文件中的参数"} 状态码400 失败

在 postman 中,我传递了一个 zip 文件,其正文中以“file”作为键,值作为 abc.zip 文件。效果很好。我尝试使用 httplib 库,但失败,因为我的帖子 url 不包含端口号。这是 httplib 的错误:

python HttpClientEx.py Traceback (most recent call last): File "HttpClientEx.py", line 4, in h = http.client.HTTPConnection(url) File "c:\python27\Lib\httplib.py", line 736, in init (self.host, self.port) = self._get_hostport(host, port) File "c:\python27\Lib\httplib.py", line 777, in _get_hostport raise InvalidURL("nonnumeric port: '%s'" % host[i+1:]) httplib.InvalidURL: nonnumeric port: '// ....net/analytics/upload_file'

如何调用rest url post并使用urllib库上传文件。请建议在休息客户端上传文件的任何其他方法。谢谢。

我发现了另一个重复的帖子:

Python Requests - Post a zip file with multipart/form-data

那里提到的解决方案不起作用。我发现需要提供文件的完整路径,否则无法工作。

最佳答案

使用 urllib3 模块。

https://urllib3.readthedocs.io/en/latest/user-guide.html

文件和二进制数据

要使用 multipart/form-data 编码上传文件,您可以使用与表单数据相同的方法,并将文件字段指定为 (file_name, file_data) 的元组:

with open('example.txt') as fp:
file_data = fp.read()
r = http.request(
'POST',
'http://httpbin.org/post',
fields={
'filefield': ('example.txt', file_data),
})

json.loads(r.data.decode('utf-8'))['files']

关于Python Rest客户端api上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com