Django-唯一的上传文件名,无论文件扩展名如何

时间:2019-05-05 16:10:11

标签: django python-3.x uuid django-file-upload

我想为每个上传的文件创建唯一的文件名(类似于this),但是无论扩展名如何(即name.txt和name.dxf都是冲突的)

我要将服务器上的文件(即ogg,wav等)转换为特定的文件类型扩展名,即。 mp3,然后删除原始文件。

此问题是,如果有人上载具有不同扩展名但具有相同基本名称的文件,则转换将覆盖原始文件。

我显然可以检查目标文件是否已存在。我知道Django如果与确切的文件名匹配存在冲突,也会生成某种唯一标识符(附加到上载的文件名),例如“ _HVk3AIt”。这是UUID吗?

我最初虽然添加了一个随机生成的UUID,但这是一个糟糕的解决方案,因为即使2 ^ 128就像4 * 10 ^ 38(发生冲突的可能性很小),您最终还是可以从技术上覆盖某些东西,但是我想您只是继续检查新的建议文件名,如果遇到第二次碰撞等,请添加辅助UUID。

这是一个好的解决方案,还是解决此问题的标准做法?

0 个答案:

没有答案