django+ajax用FileResponse文件下载到浏览器过程…

2018-09-18 06:42:24来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

django后端的下载文件到浏览器:

from django.http import FileResponse
def filedownload(request,filepath):
    file = open(filepath, 'rb')
    response = FileResponse(file)
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = 'attachment;filename="example.tar.gz"'
    return response

 

前端ajax:

<script>

        $(".sub").on("click", function () {
            $.ajax({
                url: "/download",
                type: "post",
                data: {
                    id1: $("#id1").val(),
                    id2: $("#id2").val(),
                    start_date: $("#start_date").val(),
                    end_date: $("#end_date").val(),
                },
                success: function (data) {
                        var path = data.path;
                        location.href = path
                }

            })

        });
    </script>

问题:

  需求是要从mongodb中查找数据并下载回本地,但是在将文件从mongodb拉回django服务端,从django服务端向浏览器下载的时候出了问题。由于是用的ajax请求,一开始是直接将return response。

 

但是由于是异步,所以response并不会在浏览器下载,而是到了ajax中的success中的data,且是string类型,我判断它是由于异步所以并不能直接下载,因此就将response单独拿出来封装成一个函数并写了一个url指向它,从mongodb拉回来文件之后,redirect到response函数的接口,然后用函数去返回文件下载。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python并发编程之协程

下一篇:变量