在django中使用文件上载时重命名的文件

时间:2018-02-13 18:59:51

标签: django python-3.x file-upload bootstrap-4

我在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')

1 个答案:

答案 0 :(得分:1)

您可以看到this documentation有关生成名称的原因。

TemporaryFileUploadHandler生成它所说的内容的原因是:临时文件。一旦你将它们送到你的服务器上,由你决定你想用它们做什么(处理它,保存它等等)。基本上你不应该在/ tmp文件夹中查找任何内容。相反,您应该使用文件存储API来处理文件。

看起来您可能会尝试查看&#39;名称&#39;来自this documentation文件的属性,但这里是handing file uploads的完整文档。