使用 python 将二进制文件上传到 API

Uploading binary file to API using python

我正在尝试使用 python 将二进制包上传到存储的 RestAPI。但是它不断抛出错误并且无法上传文件。 下面是我用来实现它的代码:

jsonheaderup={'Content-Type': 'application/octet-stream'}

file = open('install.pkg.gz', 'rb')
files = {'file': file}

def upload_code():

  u = requests.post("%s/api/sys/v2/updates" % (url), files=files, verify=False,      headers=jsonheaderup)
  l = json.loads(u.text)

upload_code()

第一眼看不出有错

你看到了吗:Python 3 script to upload a file to a REST URL (multipart request)

早期的帖子并没有真正帮助,但我通过参考 requests 的原始文档弄明白了:流媒体上传。检查 doc here.

由于我的文件很大,大约 1.9 GB,因此会话在上传过程之间中断,因此出现 "Internal error" 错误。

由于它的巨大文件,我通过在我的函数中提供一个类似文件的对象来流式传输和上传它:

def upload_code():
  jsonheaderup={'Content-Type': 'application/octet-stream'}
  with open('/root/ak-nas-2013-06-05-7-18-1-1-3-nd.pkg.gz', 'rb') as file:
    requests.post("%s/api/system/v1/updates" % (url), data=file, auth=zfsauth, verify=False, headers=jsonheaderup, timeout=None)