jQuery技术:使用PHP / jQuery强制下载

我知道有很多关于用PHP强制下载的问题,但我找不到我做错了什么,我该怎么办。

我有一个包含文件名的列表,我想通过单击按钮下载其中一个。

我的jQuery:

$(".MappeDownload").on("click",function(e){ e.stopPropagation(); fileId=$(this).val() $.post("ajax/DownloadFile.php",{ id : fileId}) }) 

在服务器端,我有一个包含文件名和文件路径的表。

 $sql = "SELECT vUploadPfad, vUploadOriginname FROM tabUpload WHERE zUploadId='$_POST[id]'"; $result = mysql_query($sql) or die(""); $file = mysql_fetch_array($result); $localfile = $file["vUploadPfad"]; $name=$file["vUploadOriginname"]; $fp = fopen($localfile, 'rb'); header("Cache-Control: "); header("Pragma: "); header("Content-Type: application/octet-stream"); header("Content-Length: " . filesize($localfile)); header("Content-Disposition: attachment; filename='".$name."';"); header("Content-Transfer-Encoding: binaryn"); fpassthru($fp); exit; 

AJAX请求成功,我得到了正确的标题(文件大小,文件名等…),但下载没有启动。

    您不需要ajax,只需重定向到强制下载的地址即可。 页面不会改变,而不是$.post("ajax/DownloadFile.php",{ id : fileId})你应该有location.href = "ajax/DownloadFile.php?id="+fileId ,在你的PHP文件,将$ _POST转换为$ _GET

    对AJAX请求的响应永远不会触发下载。 AJAX请求在后台静默处理,它们永远不会直接触发可见活动。

    您需要重定向主页面或iframe才能触发下载。

    有我的解决方案:

      

    action.php

     ' 

      以上就是jQuery教程分享使用PHP / jQuery强制下载相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/547555.html

      (0)
      上一篇 2021年1月11日
      下一篇 2021年1月11日

      精彩推荐