Мы используем Python Django.Хранилище файлов 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
? Они, похоже, не совсем адаптированы к моим потребностям, потому что было бы лучше генерировать хеш только при фактическом сохранении файла, а не только при рассмотрении его имени.
Итак, что делать?
Я бы перефразировать '' для '' , как его сбивает с толку и вид красного флага :) –
petkostas
Вы, вероятно, не хотите сделать это для всех загрузок по всему миру только для чувствительных, и вы можете сделать это на основе поля, написав свой собственный ['upload_to'] (https://docs.djangoproject.com/en/1.10/ref/models/fields/#django .db.models.FileField.upload_to). – Anonymous
@ Анонимный Я хочу, чтобы ** все ** загружались, чтобы быть защищенным, помещая их в каталог с секретным именем. – porton