django:文件不存在时重定向后意外下载文件

时间:2020-03-11 10:32:57

标签: python django download response response.redirect

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

1 个答案:

答案 0 :(得分:0)

事实证明,问题出在模板上,其中下载链接为<a href="xxx" download>,而download属性强制下载。