Я использую пользовательское местоположение, определенное PROTECTED_FILE_PATH, для хранения загрузок файла приложения Django.Это местоположение не определяется MEDIA_URL или MEDIA_ROOT, но вместо этого переменной, называемой PROTECTED_FILE_PATH.Загрузка работает нормально.У меня проблемы с настройкой base_url в пользовательском fileSystemStorage и возможностью установить правильный путь и функциональность, чтобы иметь возможность просматривать файл.
Определение protected_fs.Не уверен, какой должен быть правильный базовый URL.
protected_fs = FileSystemStorage(location=settings.PROTECTED_FILE_PATH,
base_url=settings.PROTECTED_FILE_PATH)
Из моделей Класс:
mou_doc = models.FileField(upload_to='mou',
storage=protected_fs, blank=True, null=True)
Из urls.py
, url(r'^staff/mou/view_file/(?P<filepath>.*)$', 'view_moufile', name='view_moufile')
Я бы хотелзнать, как настроить соответствующий base_url и соответствующую функцию представления, чтобы иметь возможность обслуживать и просматривать эти файлы.
UPDATE :: Так что я добился немного большего прогресса.Я обновил base_url, чтобы он стал
protected_fs = FileSystemStorage(location=settings.PROTECTED_FILE_PATH, base_url='/staff/mou/view_file/')
И файл_обзора выглядит так:
def view_moufile(request, filepath):
response = HttpResponse()
# have to strip off the trailing slash!
filepath = filepath.rstrip('/')
filename = os.path.basename(filepath)
ext = os.path.splitext(filename)[1]
if ext in mime_types:
response['content-type'] = mime_types[ext]
else:
del response['content-type'] # use default
# allow some to open in browser
if ext in ('.pdf','.txt','.png','.jpg'):
response['Content-Disposition'] = ('inline; filename="' +
filename + '"')
# others will download as attachment
else:
response['Content-Disposition'] = ('attachment; filename="' +
filename + '"')
response['X-Sendfile'] = os.path.join(settings.PROTECTED_FILE_PATH,
filepath)
return response
Теперь, когда я пытаюсь открыть файл, я получаю пустое приложение PDF, открывающееся в браузере ссообщение об ошибке «Этот документ PDF может отображаться неправильно».Удаление кода для открытия в браузере и принуждение к сохранению документа приводит к тому, что «Adobe Acrobat Reader не может открыть» JICS-00-Acceptable-Use-Policy-v1.1-1.pdf, поскольку он либо не поддерживаетсявведите или потому, что файл был поврежден (например, он был отправлен как вложение электронной почты и не был правильно декодирован). ', при попытке открыть документ.Такое ощущение, что я что-то упустил при рендеринге или пути к файлу