在Django中选择上传文件的文件名

8 投票
2 回答
7653 浏览
提问于 2025-04-15 13:25

我正在上传图片(用一个文件字段来表示),我需要在上传时给这些文件重新命名。

我希望它们的格式是这样的:

"%d-%d-%s.%s" % (宽度, 高度, md5哈希值, 原始扩展名)

我看过文档,但我不知道我是否需要自己写一个文件系统存储类,或者自己写一个文件字段类,还是其他的……一切都联系在一起,我不知道从哪里开始。

2 个回答

-1

我一开始看到这个问题时,觉得你需要在模型上重写保存的方法,并使用os.rename()这个方法,但这样做会增加很多负担,从头到尾都挺麻烦的。如果你只是想改一下文件的名字,而不想对文件本身做任何实际的改变(比如调整大小、复制等),那么我绝对推荐上面arcanum提到的方法。

19

你不需要自己写一个复杂的FileStorage类或者其他麻烦的东西。

在File/ImageFields中,有一个叫'upload_to'的参数,它可以接收一个函数,这个函数会返回你想要使用的路径或文件。

关于怎么做,这里已经有人回答过了,具体可以查看这个链接

撰写回答