Flask FileStorage对象到File对象

sag*_*gar 6 python io flask

我已经制作了一个api,通过flask它提交文件,在后端接收后,我想使用python requests模块进一步上传到一个未知的服务器

如果我这样做,服务器接受该文件 -

requests.post(urlToUnknownServer,files={'file':open('pathToFile')})
Run Code Online (Sandbox Code Playgroud)

现在我的要求是通过flask上传文件参数.
在烧瓶中,我将文件作为FileStorage对象.我不想将其保存在我的服务器上,而是直接希望它进一步上传.
所以基本上我想将该FileStorage对象转换为返回open()函数类型file(如果我错了,请在这里纠正我)

我试过用它 -

obj=file(request.files['fileName'].read().encode('string-escape'))
requests.post(urlToUnknownServer,files={'file':obj})
Run Code Online (Sandbox Code Playgroud)

这不起作用.如果不在我的服务器上保存文件,是否可以这样做.

小智 8

也许您可以使用 read() 而不对其进行编码。比如这样:

obj=request.files['fileName'].read()
requests.post(urlToUnknownServer,files={'file':obj})
Run Code Online (Sandbox Code Playgroud)


小智 6

对于遇到同样问题的任何人,只需转换为BufferedReader

像这样:

    from io import BufferedReader
    image = request.files.get('name')
    image.name = image.filename
    image = BufferedReader(image)
Run Code Online (Sandbox Code Playgroud)

然后你就可以发布它

    requests.post(urlToUnknownServer,files={'file' : image})
Run Code Online (Sandbox Code Playgroud)