Flask FileStorage对象到文件对象

时间:2016-09-11 15:51:28

标签: python flask io

我通过提交文件的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})

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

3 个答案:

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