我通过提交文件的flask
制作了一个api,在后端收到后,我希望使用python requests
模块进一步将其上传到未知服务器
如果我这样做,服务器接受该文件 -
requests.post(urlToUnknownServer,files={'file':open('pathToFile')})
现在我的要求是通过烧瓶上传文件参数
在烧瓶中,我将文件作为FileStorage
对象获取。我不想将其保存在我的服务器上,而是直接希望它进一步上传
所以基本上我想将FileStorage
对象转换为open()
函数的返回类型file
(如果我错了,请在这里纠正我)
我曾尝试使用 -
obj=file(request.files['fileName'].read().encode('string-escape'))
requests.post(urlToUnknownServer,files={'file':obj})
这不起作用。如果不在我的服务器上保存文件,是否可以这样做。
答案 0 :(得分:3)
也许你可以使用read()而无需编码。比如:
obj=request.files['fileName'].read()
requests.post(urlToUnknownServer,files={'file':obj})
答案 1 :(得分:1)
对于遇到同样问题的任何人,只需转换为BufferedReader
像这样:
from io import BufferedReader
image = request.files.get('name')
image.name = image.filename
image = BufferedReader(image)
然后您可以发布
requests.post(urlToUnknownServer,files={'file' : image})
答案 2 :(得分:-1)
尝试不使用file()构造函数:
obj = request.files['fileName'].read().encode('string-escape')
requests.post(urlToUnknownServer,files={'file':obj})