我正在尝试使用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()
答案 0 :(得分:0)
乍看之下,我看不到任何错误。
您看到了以下内容:Python 3 script to upload a file to a REST URL (multipart request)吗?
答案 1 :(得分:0)
早期的帖子并没有真正帮助,但是我通过参考请求的原始文档-流式上传来弄清楚了。 http://docs.python-requests.org/en/master/user/advanced/
由于我的文件很大,约为1.9 GB,因此会话在上载过程之间中断,因此出现错误“内部错误”。
作为巨大的文件,我通过在函数中提供类似文件的对象来流式传输并上传它:
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)