使用ajax将具有不同名称的文件下载到存储的名称

时间:2015-04-07 12:31:53

标签: javascript php jquery ajax smarty

我按照它在这里写的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 reuest通过成功传递并提醒一个难以理解的代码,当我读它时,它肯定是pdf文件的代码。

1 个答案:

答案 0 :(得分:1)

您无法通过ajax请求让客户端下载文件。

你在这里做的是用PHP读取文件服务器端并将其内容返回给调用者脚本(实际上你看到&#34; data&#34;变量中的内容)

如果没有ajax,您可以像这样调用脚本:

<a href='path/to/your/phpscript.php' target='_blank' ><img src='../tools/telecharger.gif' /></a>

它会将文件发送到浏览器

编辑:如果您将属性 target =&#34; _ blank&#34; 添加到锚点,它将在新标签页中打开下载,而无需重新加载当前页面