python - 如何在不将文件保存到磁盘的情况下从 request.FILES 打开和读取文件

标签 python django

有没有办法将 request.FILES 中的文件视为磁盘文件?我想做这样的事情:

with open(file_in_request, 'rb') as file:
        #read data from that file

只是,我不想先将它保存到磁盘。我将加密该文件并将加密的文件保存到磁盘。

最佳答案

TLDR:通过将 FILE_UPLOAD_MAX_MEMORY_SIZE Django 变量修改为足够大的值以将文件保存在内存中。


默认情况下,Django 在内存中存储大小为 2.5 MB 的文件,大于该大小的文件存储在临时磁盘位置。

此行为的原因是在内存中保存大文件会使您的系统不堪重负。 Read it here in docs .

在您的情况下,如果您知道最大文件大小并且确定它不会大到足以填满您的计算机内存,您可以将阈值 FILE_UPLOAD_MAX_MEMORY_SIZE 变量修改为足够大值以确保所有文件都在内存中。

来自docs :

The maximum size (in bytes) that an upload will be before it gets streamed to the file system. See Managing files for details

关于python - 如何在不将文件保存到磁盘的情况下从 request.FILES 打开和读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47567380/

相关文章:

python - 单个django查询集获取n个相邻项目

python - 在 python 中有效地从包含大量文件的 zip 中读取一个文件

python - “classmethod”对象在 Python 3 的元类方法中不可调用

python - 将 class_weight 添加到 .fit_generator() 会破坏 to_categorical()

python - Django 列表序列化器批量更新失败, 'QuerySet' 对象没有属性 'pk'

python - Django REST Framework - 序列化外键字段

django - Sphinx - 记录 Django 模型

python - Jupyter Notebooks 使用 Matplotlib 打印出波浪形、扭曲的图形

Python:通过管道将 pcap 文件传输到 stdout 会出现错误

python - 是否可以使用 Django ORM 选择不接收仅接收基于实际列计算的值的表字段?