У меня есть набор статических файлов (которые загружаются через приложение), таких как изображения, видео и т. Д., Которые должны быть предоставлены аутентифицированным пользователям (то есть их cookie зарегистрированы как аутентифицированные в сеансе).
Эти файлы являются отдельными и никак не связаны с другими статическими файлами мультимедиа, такими как css, javaacript и т. Д.
Учитывая, что мои статические файлы, которые должны быть аутентифицированы, будут довольно большими, я былИнтересно, что будет наиболее эффективным способом их обслуживания (кстати, я использую wsgi).
В настоящее время у меня есть это:
def return_large_file(request, p_filename):
"""
Send a file through Django without loading the whole file into
memory at once. The FileWrapper will turn the file object into an
iterator for chunks of 8KB.
"""
if not os.path.exists(p_filename):
raise Exception('File %s does not exist!')
try:
_content_type = mimetypes.guess_type(p_filename)
except:
_content_type = 'application/octet-stream'
wrapper = FileWrapper(file(p_filename))
response = HttpResponse(wrapper, content_type=_content_type)
response['Content-Length'] = os.path.getsize(p_filename)
return response