服务器内存中的Python3 Flask上传文件

皮基

我正在Python3中使用Flask作为网络服务器,并正在使用Flask的上传功能。将文件上载到服务器会产生一个werkzeug.datastructures.FileStorage对象。

我需要此文件的功能之一,还需要能够从路径对象中打开文件,因此,我现在正在使用open(file_to_open)如果可能的话,我想避免将上传的文件写入临时文件,而只是再次读入。所以我的问题包括两部分:

1:是否可以将此FileStorage对象“翻译”为文件对象?

2:如果是这样,这是否也适用于当前代码(open(file_to_open))?

马丁·彼得斯(Martijn Pieters)

传入的文件上传确实是作为FileStorage对象呈现的然而,这并没有一定意味着实际的物理文件是参与。

解析文件对象时,Werkzeug使用stream_factory()Callable来生成文件对象。默认实现只为500kb以上的文件创建一个实际的物理文件,以避免占用内存。

对于较小的文件,而是使用内存中的文件对象。

我不会篡改这种安排。由于目前可以正常使用,因此问题得到了透明处理,并且仅当文件上传会给您的内存带来过多负担时,才会涉及您的硬盘。

相反,我将更改该函数以不需要文件名和/或接受文件对象。

如果您的函数只能采用路径包含的数据作为字符串,则可以通过内省基础.stream属性来查看是否需要读取文件

from werkzeug._compat import BytesIO

filename = data = None
if file_upload.filename is None:
    data = file_upload.read()  # in-memory stream, so read it out.
else:
    filename = file_upload.filename

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Flask python3 中的 SOAP 服务器

在Flask中测试文件上传

Flask/ShinyProxy 中的文件上传

Python + Flask图片上传“无文件部分”

javascript/python/flask - formData 不将上传的文件发送到服务器

使用Angular 6向Flask(Python)Web服务上传文件

文件服务器上传Python

将文件上传到tmp文件夹flask python

通过flask在服务器中上传和保存文件出错

使用 http post 将文件上传到运行 python flask 的服务器时,文件名中的特殊字符丢失

使用recorder.js录制语音并将其上传到python-flask服务器,但WAV文件损坏

使用flask将文件上传到亚马逊s3

使用Python Flask上传CSV文件并进行处理

Flask / Python:保存之前修改上传的文件数据

使用Python'flask'应用登录并上传文件

Javascript获取上传文件到Python Flask-restful

Python-Flask CSV 文件上传错误处理

Python Flask 文件上传失败并出现 404 错误

Flask中无法使用FormData()和jQuery处理文件上传

将文件上传到Java中没有临时文件的HTTP服务器内存中?

使用smb协议python3访问服务器上的远程文件

如何使用python3循环读取文件N行并发布到服务器

Python文件上传:具有多个其他字段的Ajax和Flask上传

如何将pdf文件和图像文件上传到flask中的不同上传文件夹?

使用Flask将文件上传到目录时出现内部服务器错误代码500

文件上传到服务器后触发操作(服务器路径中存在文件)

使用python将文件上传到瓶子服务器

将文件上传到SailsJS中的远程服务器

如何允许WAMP服务器中的DLL文件上传