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

vir*_*rus 9 python django

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

from django.db import models
class UploadFile(models.Model):
    uploadfile = models.FileField(upload_to='toProcess/')
Run Code Online (Sandbox Code Playgroud)

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

newfile = UploadFile(uploadfile = request.FILES['file'])
newfile.save()
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pyn*_*hia 13

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

newfile.uploadfile.name
Run Code Online (Sandbox Code Playgroud)

并且文件的路径存储在

newfile.uploadfile.path
Run Code Online (Sandbox Code Playgroud)

请参阅官方 Django文档以获取进一步参考,以及许多其他 SO Q&A(例如这个

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