我正在使用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')
发送文件数据与以字节发送数据之间的联系是什么? ?。
答案 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