Как отправить видеофайл mp4 в качестве ответа в django? Я не хочу вставлять в видео или объектные теги html, но хочу отправить сам mp4. Кто-нибудь может помочь с этой проблемой?
Отправка видео в качестве ответа в django
Ответы (1)
Как правило, вы не хотите этого делать; лучше перенаправить на сервер, отличный от Django, на обслуживать статические файлы, например. django.shortcuts.redirect
-- будет быстрее, больше памяти- эффективным и, вероятно, более безопасным. Но, конечно, иногда это не удобно. Это должно работать:
from wsgiref.util import FileWrapper
file = FileWrapper(open('path/to/video.mp4', 'rb'))
response = HttpResponse(file, content_type='video/mp4')
response['Content-Disposition'] = 'attachment; filename=my_video.mp4'
return response
FileWrapper
(документы) используется, поэтому слишком много данных не отправляется сразу, поскольку файловые объекты Python повторяют строку за раз, а символы \n
, по-видимому, не особенно распространены в mp4. (Отправка слишком большого количества данных означает, что веб-сервер не может отправить файл, поскольку он считывается с жесткого диска, а вместо этого должен ждать длинных неудобных интервалов приращения.)
Обратите внимание: хотя я нигде не вижу этого в документации, файл закрывается по завершении.