我想知道使用 Pyramid 从 GridFS 提供文件的最佳且可能最简单的方法是什么。我使用 nginx 作为代理服务器(用于 ssl)和女服务员作为我的应用程序服务器。
我需要能够提供的文件类型如下:mp3、pdf、jpg、png
这些文件应该可以通过以下 url "/files/{userid}/{filename}" 访问
现在文件由客户端的正确应用程序打开,因为我在我的代码中明确设置了内容类型,如下所示:
if filename[-3:] == "pdf":
response = Response(content_type='application/pdf')
elif filename[-3:] in ["jpg", "png"]:
response = Response(content_type='image/*')
elif filename[-3:] in ["mp3"]:
response = Response(content_type='audio/mp3')
else:
response = Response(content_type="application/*")
response.app_iter = file #file is a GridFS file object
return response
唯一的问题是我无法正确播放 mp3。我使用audio.js来播放它们。它们打开并播放,但没有显示音轨长度,我无法找到它们。我知道它与“接受范围”属性有关,但我似乎无法正确设置它。它与nginx或服务员有关吗?或者我只是没有正确设置标题?
我想使用像这里return FileResponse(file)
指定的那样简单的东西,但我的文件不是直接来自文件系统......有没有即插即用的方式来完成这项工作?
任何建议将不胜感激!
非常感谢您的帮助!