我在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})
答案 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})