使用请求发布上传文件

时间:2015-09-08 14:34:06

标签: python flask python-requests

我在Flask中从HTML表单接收文件,并希望使用请求将其发布到其他服务。在目标服务中,传入请求不包含该文件。如何发布上传的文件?

f = request.files['file']
sendFile = {"file": FileStorage(filename=f.filename, stream=f.stream, content_type=f.content_type, content_length=actualSize)}

c = checksumMD5(f.stream)
r = requests.post("http://myservicedotcom/upload", files=sendFile,
                  headers={"X-Auth-Token":token, "Checksum":checksumMD5(f.stream), "File-Size":actualSize})

1 个答案:

答案 0 :(得分:8)

您无需将上传的文件包装在FileStorage实例中;这是Werkzeug(支持Flask的库)的实现细节。

相反,您需要在创建校验和后回放您的流

f = request.files['file']
c = checksumMD5(f.stream)
f.seek(0)

sendFile = {"file": (f.filename, f.stream, f.mimetype)}

r = requests.post("http://myservicedotcom/upload", files=sendFile,
                  headers={"X-Auth-Token": token, "Checksum": c, "File-Size": actualSize})