文件下载操作的Ajax

File Download Operation By Ajax

本文关键字:Ajax 操作 文件下载      更新时间:2023-09-26

需要下载动态生成的文件(根据用户输入)…

我一直在使用mPDF (php模块创建pdf文件)。

gen.php

require("./MPDF56/mpdf.php");
$mpdf=new mPDF();
$mpdf->WriteHTML('<p>Hallo World</p>');
$mpdf->Output('filename.pdf','I');

这个脚本工作完美。输出方法可以有几个选项,如

'F' : to save pdf to local.
'S' : to return file as string.
'D' : to download the file.
'I' : force download... plug-in if available.
http://mpdf1.com/manual/index.php?tid=125

当浏览器读取gen.php。PDF档案将会下载。就像我说的,它工作得很好…

直到,我尝试用ajax做这件事。

这个脚本…

$.ajax({
  type:           'POST',
  cache:          false,
  url:            './gen.php',
  data:           JSON.stringify(inps),
  contentType:    'application/json',
});

触发gen.php。创建PDF文件。但是,文件不发送到浏览器。

如果我把它添加到ajax部分…

success: function(response){
  $("#result").html(response);
}

Document以字符串的形式接收文件。我尝试了mPDF的所有选项。输出函数。没有结果。

我想了一个工作,但我不知道如何实现它。

Ajax在发送数据时需要打开一个弹出窗口。所以文件下载操作将在另一个标签下完成。

或者。我可以尝试打开gen.php的一个不可见的iframe,并在I帧创建后发送数据…

任何建议都会有帮助。

不久

ajax如何调用php文件(下载文件)。

我想这篇文章标题中问的问题在这里得到了回答:用jQuery下载一个文件。Ajax

但是可能有一个更简单的方法来实现你的目标,据我所知。如果你需要发送信息到gen.php脚本,你担心发送的数据大小准备PDF和HTTP GET如何处理,使用FORM POST代替:

<form action="gen.php" method="post">
    <input type="text" name="X">
    <input type="text" name="Y">
    <input type="text" name="Z">
    <input type="submit" value="Download">
</form>

如果mPDF响应适当的标头(我期望如此),则主页面不会重新加载,而是将文件发送到浏览器进行下载。