Python django存储与Amazon S3-防止覆盖

Python django存储与Amazon S3-防止覆盖,python,django,file-upload,amazon-s3,Python,Django,File Upload,Amazon S3,我注意到django存储(或者可能是django的存储API本身)会覆盖同名文件。这对我来说是个问题,因为我的网站允许用户上传,所以我需要确保文件永远不会被覆盖 理想情况下,我希望能够从视图级别将文件名传递到存储后端,但我正在努力找到一种优雅的方法来实现这一点。如果在某个地方有一个开关,我可以执行类似于overwrite=False的操作,并让后端提供自己的替代名称,我也会很高兴。如果您在django存储中使用的是s3boto后端而不是旧的s3后端,那么您可以使用AWS_s3_FILE_over

我注意到django存储(或者可能是django的存储API本身)会覆盖同名文件。这对我来说是个问题,因为我的网站允许用户上传,所以我需要确保文件永远不会被覆盖


理想情况下,我希望能够从视图级别将文件名传递到存储后端,但我正在努力找到一种优雅的方法来实现这一点。如果在某个地方有一个开关,我可以执行类似于
overwrite=False
的操作,并让后端提供自己的替代名称,我也会很高兴。

如果您在django存储中使用的是s3boto后端而不是旧的s3后端,那么您可以使用
AWS_s3_FILE_overwrite
设置来更改此设置:

恰当地指出,将
AWS\u S3\u FILE\u OVERWRITE
设置为
False
可以避免此问题

此外,您可能还需要稍微改进文件名间距。您可以在S3上以您想要的任何名称保存文件(不必是用户上传的文件名)。因此,您可以使用名称“user\u uploads/[user\u id]/[user\u generated\u file\u name]”保存文件。作为下载的一部分,您还可以将文件名设置为您想要的任何名称。如果将用户上载的文件名另存为模型上的字段,则可以在下载文件的视图中将其指定为文件名