带文件+数据的python POST请求

时间:2015-12-09 13:32:00

标签: python python-requests multipartform-data

我试图通过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)

干杯弗洛里安

2 个答案:

答案 0 :(得分:2)

files = {'imageFile' :    open('test_pic/1.jpg'), 'ticket' : ticket}

ticket类型的int是?我遇到了同样的问题,文件中的值必须是strbytesbytearray或文件对象(这会导致读取操作),请参阅请求的models.py中的详细信息(函数_encode_files()

答案 1 :(得分:1)

有几件事要尝试:

  1. 如果您使用的是Windows,请确保为b的文件权限添加open

    open('filename', 'rb')
    

    这将确保文件被读取为二进制文件,否则可能会导致一些错误

  2. 发送多个文件时,需要传入元组列表,而不是字典:

    >>> 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)
    

    根据online documentation