如何从 request.FILES 打开并读取文件而不将其保存到磁盘

Tah*_*bal 5 python django

request.FILES有没有办法像对待磁盘文件一样对待文件?我想做这样的事情:

with open(file_in_request, 'rb') as file:
        #read data from that file
Run Code Online (Sandbox Code Playgroud)

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

Ami*_*thi 4

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


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

出现此行为的原因是,将大文件保留在内存中可能会压垮您的系统。在文档中阅读此处

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

来自文档

上传到文件系统之前的最大大小(以字节为单位)。有关详细信息,请参阅管理文件