Django == 1.11.12
如果文件存在,则视图函数将创建StreamingHttpResponse
,一切正常。但是,如果文件不存在,则视图函数应重定向。问题是,它不重定向,而是提示您要求另存为文件,该文件包含重定向的html的内容。
import os
from wsgiref.util import FileWrapper
import mimetypes
from django.http import StreamingHttpResponse
from django.shortcuts import render, redirect
def download(request, file_path):
try:
response = StreamingHttpResponse(
FileWrapper(open(file_path, 'rb'), chunk_size),
content_type=mimetypes.guess_type(file_path)[0])
response['Content-Length'] = os.path.getsize(file_path)
response['Content-Disposition'] = "attachment; filename=a_file.xlsx")
except FileNotFoundError as e:
response = redirect("home")
return response
答案 0 :(得分:0)
事实证明,问题出在模板上,其中下载链接为<a href="xxx" download>
,而download属性强制下载。