如何在同一个应用程序上下载Django应用程序创建的word文档

2024-05-19 19:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django应用程序,它从模板创建word文档。在用户输入之后,我向我的ajax请求并创建文档。创建文档后,我希望它可以从服务器下载。文档保存在static/documents文件夹中。在我的模板中,我有以下内容:

$.ajax({
            url: '/ajax/result/',
            data : { 'values': JSON.stringify(dataJson),
                     'general': JSON.stringify(generalData)
        },
            method: 'GET',
            contentType: "application/json",
            dataType: 'json',
            success: function (data){
                Download('documents/'+document.getElementById('id_file_name').value+'.docx');
                alert(data);

            },
            error: function(data) { 
                alert("something went wrong");

            }
        });

        function Download(url) {
            document.getElementById('my_iframe').src = url;
        };

Download(url)函数是下载文档的函数。我可以得到文件名的文件,因为它是从用户输入。我目前在我的主机上得到一个404错误。 提前谢谢


Tags: 用户文档模板jsonurldatadownloadajax
2条回答

如果你能用这个技巧来表达你的观点:

    file_name = ## your file name
    file_root = ## your file root
    with open(file_root , 'rb') as f:
        wrapper = FileWrapper(f)
        mimetype = "application/force-download"
        guessed_type = guess_type(file_name)[0]
        if guessed_type:
            mimetype = guessed_type
        response = HttpResponse(wrapper, mimetype)
        response['Content-Disposition'] = "attachment;filename=%s"%(download_obj.get_name)
        response['X-SendFile'] = "%s"%(download_obj.get_name)
        return response

别忘了把必要的东西放在最上面视图.py文件:

from django.shortcuts import HttpResponse
from mimetypes import guess_type
from wsgiref.util import FileWrapper

为这个视图创建一个新的url,并点击ajax中的url,您可以动态地将文件名传递给视图

您需要声明实际的文件路径

Download('http://127.0.0.1:8000/something/something/documents/'+document.getElementById('id_file_name').value+'.docx');

相关问题 更多 >