django javascript从 AJAX 下载docx文件响应

46qrfjad  于 2023-01-14  发布在  Go
关注(0)|答案(1)|浏览(141)

我有一个带return的django函数:

...
return FileResponse(open('demo.docx', 'rb'))

我使用 AJAX 在客户端下载它。现在我需要在客户端下载它。我使用以下代码:

...
success:function(response){             
                var blob = new Blob([response]);
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = "file.docx";
                link.click();
        },
...

编辑:

function func(){    

var csrftoken = $("[name=csrfmiddlewaretoken]").val();

$.ajax({
        type: 'POST',
        url: '/myapp/func/',
        headers:{
            "X-CSRFToken": csrftoken
        },
        data: {name:"",'image1': Data1},
        success:function(response){
            
                var blob = new Blob([response]);
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.setAttribute('target', '_blank');
                link.download = "file.docx";
                link.click();
            
        },
        error : function(xhr,errmsg,err) {
            alert("ajax error: func");
        } 
});

}

然而,它下载了一个损坏的东西,可能不是一个docx文件。我怎样才能在客户端上得到我作为docx阅读的东西?

bt1cpqcv

bt1cpqcv1#

问题可能是a元素上缺少download属性。
请尝试以下操作:

success:function(response){             
                    var blob = response.blob();
                    var link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blob);
                    link.setAttribute('target', '_blank');
                    link.download = "file.docx";
                    link.click();
            },

相关问题