我试图通过API上传图片和信息,这需要作为表单发送。我试图使用“文件”选项,请求提供没有成功。它给了我以下错误:
AttributeError: 'int' object has no attribute 'read'
我尝试过的代码行是:
r = requests.post(url, headers=header, files = {'imageFile' : open('test_pic/1.jpg'), 'ticket' : ticket}, verify=False)
干杯弗洛里安
答案 0 :(得分:2)
files = {'imageFile' : open('test_pic/1.jpg'), 'ticket' : ticket}
ticket
类型的int
是?我遇到了同样的问题,文件中的值必须是str
或bytes
或bytearray
或文件对象(这会导致读取操作),请参阅请求的models.py中的详细信息(函数_encode_files()
)
答案 1 :(得分:1)
有几件事要尝试:
如果您使用的是Windows,请确保为b
的文件权限添加open
:
open('filename', 'rb')
这将确保文件被读取为二进制文件,否则可能会导致一些错误
发送多个文件时,需要传入元组列表,而不是字典:
>>> multiple_files = [('images', ('foo.png', open('foo.png', 'rb'), 'image/png')),
('images', ('bar.png', open('bar.png', 'rb'), 'image/png'))]
>>> r = requests.post(url, files=multiple_files)