允许用户下载通过Ajax创建的文件

时间:2018-10-29 18:16:02

标签: php jquery phpword

我正在使用PHPWord在php中生成MS Word文档。它工作正常,我可以创建一个文件,并通过ajax请求将其存储在我的服务器上,但是在创建之后,我需要允许用户下载它。

必须以某种方式我可以序列化文件并将其传递回ajax响应,然后将其排队以便在javascript中下载?我可以就如何使用文件使用任何建议

创建文件后,我在php中尝试过

 $wordFile = file_get_contents('helloWorld2018.docx');

,然后尝试返回该值,但是当我尝试将其转换为JSON变量时,我遇到了错误。有办法我可以序列化它,通过json传递,然后将其排队下载吗?我正在使用Jquery和Codeigniter btw

谢谢

1 个答案:

答案 0 :(得分:0)

这就是我发现的。 Juan做出了正确的回应,但是却为不解释操作方式或解释window.location做出了巨大的不满,如果该用户指向文件,它实际上并不会重定向用户,只是将下载放入队列中,这很完美

我使用Codeigniter,因此在创建文件后,我将这个控制器称为“下载”

    header("Cache-Control: no-cache");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=hellowWorld2018.docx");
    header("Content-Transfer-Encoding: binary");    
    readfile("helloWorld2018.docx");

然后在ajax成功函数中,我只说window.location ='download'并下载文件。

仍然还没有弄清楚我将如何动态设置标头和readfile命令,但这应该相对容易。谢谢,G