如何在django中发送视频mp4文件作为回复?我不想嵌入html的视频或对象标签,但想要发送mp4本身。任何人都可以帮忙解决这个问题吗?
答案 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
使用FileWrapper
(docs)以便一次不发送太多数据,因为Python文件对象一次迭代一行,并且\n
个字符可能不是在mp4s中特别常见。 (发送太多意味着网络服务器无法发送文件,因为它从硬盘驱动器读取,而是必须等待很长的笨拙间隔增量。)
请注意,虽然我在文档中没有注明到这一点,但文件does get closed when it's done with。