使用python请求发送的类似文件的数据

时间:2019-12-25 22:45:47

标签: python request python-requests

我正在使用python请求将文件发送到API

    files = [("file", open(path_to_file, 'rb')]
    headers = {"Authorization": "bearer " + CLIENT.token}
    response = requests.request(
        "POST",
        SETTINGS.URL_FILE_STORAGE,
        headers=headers,
        files=files
        # files= [('file',catalogo)],
    )

会抛出202。但是,如果我以字节为单位发送文件,则type(file) = Bytes的API会抛出500。以open(path_file, 'rb')发送文件数据与以字节发送数据之间的联系是什么? ?。

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的请求?至少在当前的主分支中应该没有区别。如果您在files的{​​{1}}列表中查找情况,则会发现arguments of type str, bytes and bytearray get passed through as data,而对于类似文件的对象,将执行requests.request方法,并且结果。

因此以下内容将产生与您的代码相同的请求:

.read()

如果API对这两个版本的响应不同,我会感到非常惊讶。

但是,如果确实如此,并且您需要将 files = [("file", open(path_to_file, 'rb').read()] # Get file contents headers = {"Authorization": "bearer " + CLIENT.token} response = requests.request( "POST", SETTINGS.URL_FILE_STORAGE, headers=headers, files=files # files= [('file',catalogo)], ) 类型的数据转换为类似文件的对象,则只需使用bytes

io
import io