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

问题描述 投票:0回答:1

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
python django download response response.redirect
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.