【发布时间】:2012-05-16 14:47:11
【问题描述】:
如何在 django 中发送视频 mp4 文件作为响应?我不想嵌入 html 的视频或对象标签,但想发送 mp4 本身。有人可以帮忙解决这个问题吗?
【问题讨论】:
如何在 django 中发送视频 mp4 文件作为响应?我不想嵌入 html 的视频或对象标签,但想发送 mp4 本身。有人可以帮忙解决这个问题吗?
【问题讨论】:
通常你不想这样做;最好将非 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 字符可能在 mp4 中并不常见. (发送过多意味着网络服务器在从硬盘读取文件时无法发送文件,而是必须等待很长的间隔增量。)
请注意,尽管我在任何地方的文档中都没有看到这一点,但文件 does get closed when it's done with。
【讨论】: