我正在使用PHP中的AJAX创建简单的文件下载脚本。我的脚本无效。表示在点击后在下载链接下显示pdf / doc文件的内容。下图将说明问题。
以下是我的代码
AJAX和HTML :
$(function() {
$(".download_link").click(function() {
var test = $("#content").val();
var dataString = 'content='+ test;
$.ajax({
type: "POST",
url: "download_file.php",
data: dataString,
cache: false,
success: function(html){
$("#display").after(html);
document.getElementById('content').value='';
}
});
return true;
});
});
<a href="#" class="download_link" id="d_link">
PHP脚本:(download_file.php)
<?php
ob_start();
$file = 'file.doc';
header("location:".$file);
?>
答案 0 :(得分:2)
您正在使用$("#display").after(html);
这就是为什么它显示文件的内容。您可以按照以下代码下载该文件。
$(function() {
$(".download_link").click(function() {
var test = $("#content").val();
var dataString = 'content='+ test;
$.ajax({
type: "POST",
url: "download_file.php",
data: dataString,
cache: false,
success: function(html){
window.location = 'your_file.pdf';
}
});
return true;
});
});
答案 1 :(得分:0)
我认为你的方法不正确。
使用您的脚本,您尝试将 file.doc 内容附加到DOM对象中 - &gt;浏览器不知道AJAX请求如何管理文档的编码,它将无法正常工作。
对于下载文档我不会使用AJAX,我认为如果你只是用文档的url打开一个新窗口并让borwser管理内容的响应就没问题了:
window.open("download_file.php");
如果您只想在同一页面中显示文档内容,我会按如下方式使用iframe:
<form action="download_file.php" method="GET" target="docIframe">
<input type="submit" value="Download"/>
</form>
<iframe name="docIframe" width="600px" height="500px"/>
答案 2 :(得分:-1)
You need to set header content type to tell the browser how it renders the content for PDF or DOC.
<?php
//Set header for pdf
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='file_to_download.pdf'");
readfile("original.pdf");
?>