【发布时间】:2017-01-20 17:24:04
【问题描述】:
我们使用 Python Django。
我想通过以下方式存储用户上传的文件:
/<INTEGER>/<HASH>/<FILE>
<INTEGER> 是一个子文件夹,最多可包含 1000 个文件。
<HASH> 是每个文件的密码,以防止黑客从我们的 HTTPS 服务器下载某人的其他文件。
<FILE> 是文件名。
如何编写一个 Django 存储来实现这个?
首先,我可以从django.core.files.storage.FileSystemStorage 派生我的类还是需要直接从django.core.files.storage.Storage 派生?
其次,我应该重写哪些方法?我应该覆盖save 吗?似乎是的,因为最好只在保存时生成哈希,但我不确定我可以在save 中做我需要的事情。覆盖_save 怎么样?另外:覆盖get_available_name 和/或generate_filename 是怎么回事?它们似乎不太适合我的需要,因为最好仅在实际保存文件时生成哈希,而不仅仅是在考虑文件名时。
那么,该怎么办?
【问题讨论】:
-
我会将
<PASSWORD>改写为<HASH>,因为它令人困惑且有点危险:) -
您可能不希望仅针对敏感的上传对全局所有上传执行此操作,您可以通过编写自己的
upload_to函数在每个字段的基础上执行此操作。跨度> -
@Anonymous 我希望通过将 所有 上传文件放入具有秘密名称的目录中来保护它们。
标签: django django-storage