4

如何在 django 中发送视频 mp4 文件作为响应?我不想嵌入 html 的视频或对象标签,但想发送 mp4 本身。有人可以帮忙解决这个问题吗?

4

1 回答 1

6

通常你不想这样做;最好重定向到非 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( docs ) 是为了不会一次发送太多数据,因为 Python 文件对象一次迭代一行,并且\n字符在 mp4 中可能不是特别常见。(发送太多意味着网络服务器在从硬盘读取文件时无法发送文件,而是必须等待很长的间隔增量。)

请注意,尽管我在任何地方的文档中都没有看到这一点,但文件在使用.

于 2012-05-08T06:10:34.573 回答