django - 使用 FileField 在 Django 中保存原始文件名

标签 django upload filenames

def generate_uuid_file_name(self, filename):
    self.original_filename = filename
    extension = filename.rsplit('.', 1)[1]
    newfilename = uuid.uuid4().__str__() + '.' + extension
    return self.directory() + newfilename

class FileUpload(models.Model):
    original_filename  = models.CharField(max_length=128)
    fileobj            = models.FileField(upload_to=generate_uuid_file_name)

上传时,
{"errors": {"original_filename": ["This field is required."]}, "success": false}

在 FileUpload.original_filename 中添加 blank=True, null=True 可以使上传成功,但不保存原始文件名。在 Django 1.5 上。根据 this post ,这应该有效。

最佳答案

在 View 中执行此操作(在 null=True 之后,blank=True 再次成为模型的一部分):

file_object = UploadFileForm.save(commit=False)
file_object.original_filename = request.FILES['file'].name
file_object.save()

请注意,您需要根据您的上下文等相应地更改上述代码

关于django - 使用 FileField 在 Django 中保存原始文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355888/

相关文章:

django - Django Atomic Transaction 是否锁定数据库?

php - 记录每月用户上传到我们的网络应用程序的最佳方式是什么?

将文件上传到 Mediawiki 的 Ruby/Mechanize 多部分表单

symfony - Symfony 中的 Doctrine 可上传扩展

python - 根据文件名创建目录

java - 将文件名与 id 进行匹配

django - 南方不为第三方安装的应用程序创建表

django - 在 openshift 上重新启动 python 应用程序不会重新加载环境变量

python - Django:我的 css 静态路径不存在

java - 文件名检查