Как мне подать этот видео файл для скачивания с помощью пирамиды FileResponse
Пожалуйста, что я пропускаю. Я продолжаю получать внутреннюю ошибку сервера в браузере, когда хочу показать этот видеофайл, который был загружен на диск. вот мой код: функция просмотра
@view_config(name='download_video')
def dl(request):
url = request.params.get('url')
camefrom = request.params.get('came_from')
path_dir = request.registry.settings['app.download_path']
result= save_to_disk(url, path_dir)
if result:
filename = result['filename']
filepath = os.path.abspath(os.path.join(path_dir,filename))
file_exists = os.path.exists(filepath)
if file_exists:
res = FileResponse(filepath,content_type='video/mp4')
res.headers['Content-Length'] = os.path.getsize(filepath)
res.headers['Content-Disposition'] = 'attachment;filename=%s'%filename
return res
request.session.flash(_("Error downloading video, please check your network","danger"))
return HTTPFound(location=camefrom)
Шаблон
<a tal:attributes="href api.url(api.root, '@@download_video', query={'came_from': request.url,'url':context.video_url})" class="btn">Download</a>
Видео загружается, и я вижу его в папке, но продолжаю получать внутреннюю ошибку сервера без отслеживания в браузере
Мое приложение зависит от Kotti CMS
1 ответ
Решение
Я не уверен, что происходит с вашей регистрацией в Pyramid, но вот мой взгляд на загрузку файла. Я в настоящее время на iPhone, поэтому я просто вырезал и вставил, но вы должны понять.
@view_config(route_name="download_view", renderer="")
def server_view1010(request):
filepath = os.path.join(CFG.home_dir, "static/graphics/imgs/img_sample.jpg")
if request.storage.exists(filepath): #there is no overwrite
response = FileResponse(filepath)
response.headers['Content-Disposition'] = ("attachment; filename=img_sample.jpg")
return response
else:
return Response("Unable to find: {}".format(request.path_info))