在django中将视频作为响应发送

时间:2012-05-08 05:44:27

标签: django video response

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

1 个答案:

答案 0 :(得分:3)

一般来说,你不想这样做;最好将非Django服务器重定向到serve static files,例如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

使用FileWrapperdocs)以便一次不发送太多数据,因为Python文件对象一次迭代一行,并且\n个字符可能不是在mp4s中特别常见。 (发送太多意味着网络服务器无法发送文件,因为它从硬盘驱动器读取,而是必须等待很长的笨拙间隔增量。)

请注意,虽然我在文档中没有注明到这一点,但文件does get closed when it's done with