Django独特的文件名方法

Tho*_*hom 3 python django filenames

我正在寻找 Django 在上传文件时用来生成唯一文件名的方法。

例如,如果我test.csv在同一目录中上传一个调用了两次的文件,则第一个文件将另存为test.csv,第二个文件将另存为test_2.csv. 我已经尝试找到 Django 如何管理它,但我只发现django.utils.text.get_valid_filename哪个可能有用,但这不是我正在寻找的......

我已经看到其他带有随机命名解决方案的 主题,这不是我在这里寻找的:)我真的很想了解 Django 如何管理这个问题。

Tho*_*hom 5

事实上,在你的帮助下我仔细观察并发现了一些东西:)

所以基本上我必须做类似的事情:

from django.core.files.storage import FileSystemStorage

fss = FileSystemStorage()
filepath = fss.get_available_name(filepath)
Run Code Online (Sandbox Code Playgroud)

谢谢你们 :)

PS:如果您感兴趣, django.core.file.storage.FileSystemStorage._save的评论说:

get_available_name 和保存文件之间存在潜在的竞争条件;两个线程有​​可能返回相同的名称,此时就会发生各种有趣的事情。所以我们需要尝试创建该文件,但如果它已经存在,我们必须返回 get_available_name() 并重试。