我在Django
应用程序中使用文件上传控件(代码如下所述)。我知道Django
使用两个FILE_UPLOAD_HANDLERS
来处理文件上传请求。
基于内存:如果文件大小小于2.5mb,则使用
MemoryFileUploadHandler
并将文件保存在内存中。基于磁盘:如果文件大小超过2.5mb,则使用
TemporaryFileUploadHandler
并将文件保存在磁盘上。
我通过从MemoryFileUploadHandler
令牌中删除request
来严格使用第二种方法。我观察到的是,文件在被保存到/tmp
文件夹之前被重命名。
sample_01.pdf --> /tmp/tmpqj9jb13w.upload.pdf
sample_02.pdf --> /tmp/tmph1u_6x4r.upload.pdf
sample_03.pdf --> /tmp/tmp8p5uoh4g.upload.pdf
sample_04.pdf --> /tmp/tmpuwis6ar0.upload.pdf
sample_05.pdf --> /tmp/tmpq24bk6tm.upload.pdf
因此,识别文件变得非常困难。有没有办法保持文件的名称不变。
<div class="custom-file">
<input type="file" class="custom-file-input" id="fileupload" name="fileupload" multiple>
<label class="custom-file-label" for="fileupload">Choose files</label>
</div>
if request.method == 'POST':
files_list = request.FILES.getlist('fileupload')
答案 0 :(得分:1)
您可以看到this documentation有关生成名称的原因。
TemporaryFileUploadHandler生成它所说的内容的原因是:临时文件。一旦你将它们送到你的服务器上,由你决定你想用它们做什么(处理它,保存它等等)。基本上你不应该在/ tmp文件夹中查找任何内容。相反,您应该使用文件存储API来处理文件。
看起来您可能会尝试查看&#39;名称&#39;来自this documentation文件的属性,但这里是handing file uploads的完整文档。