如何在django中获取上传的文件名

Posted

技术标签:

【中文标题】如何在django中获取上传的文件名【英文标题】:how to get uploaded file name in django 【发布时间】:2016-04-07 02:40:16 【问题描述】:

问题背景 我是 Django 的新手。我正在尝试从客户端上传文件并保存。 为此,我创建了以下模型。

from django.db import models
class UploadFile(models.Model):
    uploadfile = models.FileField(upload_to='toProcess/')

我正在使用下面的这个模型来保存文件。

newfile = UploadFile(uploadfile = request.FILES['file'])
newfile.save()

正在保存文件。但现在我想处理保存的文件。在 django 中,如果同名文件已经存在,那么它会在原始文件名中添加一些唯一的后缀。我对这种方法很满意,不想编写新方法来创建唯一的文件名。

问题- 如何获取 django 为文件计算的新唯一名称?

意思是如果我两次上传同一个文件说“abc.pdf”,那么它会将第一个上传的文件保存为“abc.pdf”,第二个上传的文件保存为“abc_somesuffix.pdf”。如何知道保存的文件名是什么?

【问题讨论】:

newfile.uploadfile.name 不起作用吗? @Pynchia- 是的。它有效..谢谢:) 【参考方案1】:

据我所知,在您的情况下,文件名存储在模型字段的name 属性中

newfile.uploadfile.name

文件的路径存放在

newfile.uploadfile.path

请参阅official Django 文档以获取更多参考,以及许多其他 SO Q&A(例如this one)

如果您想采用自己的文件名格式,您可以在模型字段的upload_to 参数中指定一个可调用对象,如explained here

【讨论】:

以上是关于如何在django中获取上传的文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Django 视图中获取价值到 Ajax 成功函数中

获取Django app中上传文件的文件大小

Django_上传图片和模版获取图片

如何在 Django 中更改上传文件的文件名?

如何将图像上传到 Django

如何在 Django 中上传文件? [关闭]