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

2023-12-02

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

我需要此文件的功能之一,还需要能够从路径对象打开文件,所以目前,我正在使用open(file_to_open)。如果可能的话,我想避免将上传的文件写入临时文件,只是为了再次读取它。所以我的问题由两部分组成:

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

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


传入文件上传确实呈现为FileStorage对象。然而,这确实not必然意味着涉及实际的物理文件。

解析文件对象时,Werkzeug 使用stream_factory()可调用以生成文件对象。默认实现仅创建 500kb 及以上文件大小的实际物理文件,以避免耗尽内存。

For smaller文件使用内存中的文件对象代替。

我不会篡改这个安排;因为它现在可以正常工作,所以问题的处理是透明的,并且只有当文件上传会给您的内存带来太多负担时才会涉及您的硬盘。

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

如果你的函数只能采用一条路径or包含的数据作为字符串,您可以通过内省底层来查看是否需要读取该文件.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3 Flask上传文件在服务器内存中 的相关文章

随机推荐

  • 具有 gradle 和 android 的不同 API 主机

    我想知道是否可以使用 gradle 为每个构建提供不同的 API 主机 理想情况下 我想通过我的代码同样访问该常量 因此当我执行 gradle 构建时 它会构建 release apk 来指向http example com和 debug
  • 如何通过文件名访问本地文件夹?

    我有一个文件夹是我的动画 游戏 该文件夹中有 pyw 文件和 wav 音乐文件 我有 import wave wave open 而且我不知道括号里该放什么 我知道它应该是文件名 但有人可能会将游戏安装在未知的目录中 如何通过文件名访问本地
  • Android自定义编辑文本值被另一个自定义编辑文本更改

    Intro 在我的一个项目中 我尝试创建带有标题和一些自定义验证的自定义 EditText 当我通过屏幕旋转和活动娱乐来测试此自定义视图时 我遇到了一个奇怪的问题 有什么问题 休闲前 当应用程序启动时 所有编辑文本都具有从活动静态设置的正确
  • Rails 3 嵌套表单 - “添加任务”时 jQuery Datepicker 将不会加载

    我正在使用 Ryan Bates 嵌套形式 gem https github com ryanb nested form 在嵌套形式中 我有一个 jQuery 日期选择器的文本字段 我的问题是当我 添加任务 时 日期选择器没有响应 仅供参考
  • 使用 runas 命令运行脚本

    我需要以管理员身份运行安装脚本 我尝试了几件事 但没有一个有效 runas user Administrator install bat shell 要求输入密码 然后打开一个新的 shell 窗口 并立即关闭它而不执行脚本 runas u
  • 正则表达式查找sql​​注释

    我正在尝试找到一个可用于匹配 SQL 样式注释的正则表达式 单行注释相当简单 但是我不知道如何匹配多行注释 我不需要实际的替换代码 只需要正则表达式来匹配注释 例如 select from valid sql1 select from va
  • 如何使用 JavaScript 创建 div 并设置其样式?

    如何使用 JavaScript 创建包含内容的 div 并设置其样式 并附加到页面 我知道这是可能的 但是怎么可能呢 var div document createElement div div style width 100px div
  • 尝试获取 jstree 中 Change_state 上已检查项目的列表

    Using jsTree pre1 0 fix 1 我想获取以下列表id代表所有已检查的项目 或者更好的是 带有以下内容的 JSON 对象 id以及每个选中项目的文本 然后我将用它进行 ajax 调用 此外 每当检查或未检查的内容发生状态更
  • 警告:file_get_contents():https:// 包装器在服务器配置中被所有禁用

    当我上传带有邮政编码的 csv 文件时 它将转换并保存纬度和经度 将邮政编码转换为经纬度时发生错误 在我的本地主机中它工作正常 当我在实时服务器中上传时 我收到这个错误警告 file get contents https 包装器在服务器配置
  • java代码访问drools guvnor

    我们有一个项目要求通过Web应用程序访问guvnor 有人可以让我知道如何通过java代码访问guvnor吗 抵押贷款示例已经有一些示例代码 Drools Expert手册大概有详细解释 这是代码 private static Knowle
  • 带有透明三角形的导航栏活动链接

    你知道如何使用 CSS 来做到这一点吗 在我的导航栏中 我希望看到活动链接的透明三角形 如果我创建一个带有透明三角形的 PNG 图像并像这样使用它 background rgba 0 0 0 0 4 url triangle png no
  • 非二叉树高度

    有没有办法找到不一定是二叉树的高度 对于二叉树的高度有很多算法 但它们都不适用于非二叉树 就在这里 递归方法可能类似于 public class TreeNode
  • Javascript OO 参考这个

    简短描述 我使用 OO Javascript 和函数声明 new 关键字和原型方法 下面的示例 我需要一种方法来在对象的每个方法中引用 self 对象 this 似乎只有在我直接调用该方法时才有效 否则 this 似乎指的是调用该方法的任何
  • 条件运算符“?:”

    我昨天完成了 C 语言编程考试 有一个问题我无法回答 尽管我今天学习了 但我也想不出解决方案 所以我们有这个 int A 1 B 2 C 3 X 1 X B C A C A C A printf A d B d C d X d n A B
  • Redux 状态没有立即更新?

    setCurrentPage 只是将对象存储到我的全局存储中的页面对象中 所以如果我在设置后尝试立即访问它 似乎有延迟并且对象是空的 但是如果我在按钮中console log相同的对象并单击它 它就会被填充 redux 是否存在我不知道的延
  • 有没有办法让我的 Android 应用程序在安装时运行一些自定义代码?

    我对为我的应用程序运行一些反盗版措施有一些想法 所以我想知道是否可以这样做来在安装时对应用程序进行签名 在第一次启动时运行代码是不好的 因为有人仍然可以复制 apk 而不运行它 不幸的是 无法在 Android 上安装时运行代码 只能在首次
  • Intellij-IDEA GUI 表单的 Ant 构建

    我有一个使用表单的项目 它编译并运行得很好 但是当用生成的蚂蚁它不运行 我的 ant 文件有java2任务我将所需的 jar 添加到我的 lib 文件夹中
  • 测试 IInterruptableJob

    我有以下代码 private static void InterruptAJob JobKey foundJobKey IScheduler sched if null foundJobKey sched Interrupt foundJo
  • 泛型方法重载的问题

    我有以下方法 void s
  • Python3 Flask上传文件在服务器内存中

    我在Python3中使用Flask作为网络服务器 并使用Flask的上传功能 将文件上传到服务器会产生werkzeug datastructures FileStorage object 我需要此文件的功能之一 还需要能够从路径对象打开文件