使用 ajax 下载与存储名称不同的文件
Downloading a file with a different name to the stored name with ajax
我按照这里写的内容 Downloading a file with a different name to the stored name 。
但我不太了解所有内容,因为当我尝试使用 ajax 时它不起作用。我表示我使用 Smarty。
这是我的 html 代码:
// In $attache.id their is the id of the data i want to dowload in the database
<a href='javascript:uploadAttachFile({- $attache.id -});'><img src='../tools/telecharger.gif' /></a>
这是我的 jQuery 代码:
function uploadAttachFile(idAttache)
{
$.ajax({
//This permit me to go to the php function
url: ajaxURL("attacheUpload"),
type: "POST",
data: {
idAttache: idAttache
},
success: function(data)
{
alert(data);
}
})
}
这是我的 php 代码:
//Permit to have the path and new title of the file
$attacheEntite = Model_AttacheDB::getNameAndPathAttachFile(request('idAttache'));
$file = 'path' . $attacheEntite['path'];
if (file_exists($file))
{
header('Content-disposition: application/force-download; filename="' .$attacheEntite['titre']. '"');
header("Content-Type: application/pdf");
header('Content-Transfer-Encoding: binary');
header("Content-Length: " . filesize($file));
header("Pragma: ");
header("Expires: 0");
// upload the file to the user and quit
ob_clean();
flush();
readfile($file);
exit;
}
我知道它通过了我的 php 代码,因为 ajax 请求成功通过并警告一个难以理解的代码,当我阅读它时,它肯定是 pdf 文件的代码。
您不能让客户端通过 ajax 请求下载文件。
你在这里做的是用 PHP 读取文件服务器端并将其内容返回给调用者脚本(实际上你在 "data" 变量中看到了内容)
没有ajax,你可以这样调用脚本:
<a href='path/to/your/phpscript.php' target='_blank' ><img src='../tools/telecharger.gif' /></a>
然后它将文件发送到浏览器
编辑:如果您将属性 target="_blank" 添加到锚点,它将在新选项卡中打开下载,无需重新加载当前页面
我按照这里写的内容 Downloading a file with a different name to the stored name 。 但我不太了解所有内容,因为当我尝试使用 ajax 时它不起作用。我表示我使用 Smarty。
这是我的 html 代码:
// In $attache.id their is the id of the data i want to dowload in the database
<a href='javascript:uploadAttachFile({- $attache.id -});'><img src='../tools/telecharger.gif' /></a>
这是我的 jQuery 代码:
function uploadAttachFile(idAttache)
{
$.ajax({
//This permit me to go to the php function
url: ajaxURL("attacheUpload"),
type: "POST",
data: {
idAttache: idAttache
},
success: function(data)
{
alert(data);
}
})
}
这是我的 php 代码:
//Permit to have the path and new title of the file
$attacheEntite = Model_AttacheDB::getNameAndPathAttachFile(request('idAttache'));
$file = 'path' . $attacheEntite['path'];
if (file_exists($file))
{
header('Content-disposition: application/force-download; filename="' .$attacheEntite['titre']. '"');
header("Content-Type: application/pdf");
header('Content-Transfer-Encoding: binary');
header("Content-Length: " . filesize($file));
header("Pragma: ");
header("Expires: 0");
// upload the file to the user and quit
ob_clean();
flush();
readfile($file);
exit;
}
我知道它通过了我的 php 代码,因为 ajax 请求成功通过并警告一个难以理解的代码,当我阅读它时,它肯定是 pdf 文件的代码。
您不能让客户端通过 ajax 请求下载文件。
你在这里做的是用 PHP 读取文件服务器端并将其内容返回给调用者脚本(实际上你在 "data" 变量中看到了内容)
没有ajax,你可以这样调用脚本:
<a href='path/to/your/phpscript.php' target='_blank' ><img src='../tools/telecharger.gif' /></a>
然后它将文件发送到浏览器
编辑:如果您将属性 target="_blank" 添加到锚点,它将在新选项卡中打开下载,无需重新加载当前页面