尝试使用 Ajax 从远程服务器下载文件,但 Codeigniter 不起作用

Posted

技术标签:

【中文标题】尝试使用 Ajax 从远程服务器下载文件,但 Codeigniter 不起作用【英文标题】:Trying to download file from remote server using Ajax with Codeigniter not working 【发布时间】:2018-01-03 09:26:29 【问题描述】:

点击链接时,我正在尝试下载 pdf。

我调用了链接的 onlick 函数,在 Codeigniter 中我编写了一个下载 PDF 文件的函数,但是在运行 URL 时,文件被下载,但是当使用点击链接触发时,它不起作用。

控制器:

function downloadpdf($pid)
 set_time_limit(0);

    $url="http://www.malayatourism.com/uploads/images/packages/pdf/$pid.pdf";


$file = basename($url);

$fp = fopen($file, 'w');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);

$data = curl_exec($ch);

curl_close($ch);
fclose($fp);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
echo "success";

我的代码 ajax:

function DownLoadPdf(id)
 


     url = "<?php echo base_url();?>admin/packages/downloadpdf/"+id;
  $.ajax(

     type:'POST',
     url: url,
     data :  pid : id,

    success : function(response) 
       console.log(response);
    ,
    error : function(response) 
         console.log("error");
    
);

查看:

echo '<a  href="javascript:void()" title="Hapus" onclick="DownLoadPdf(' . "'" . $cdata[0]->package_id . "'" . ')"> Download Attachment</a>';

【问题讨论】:

我猜你在这里为文件创建 URL 时遇到了问题 $url="malayatourism.com/uploads/images/packages/pdf/$pid.pdf"; $file = basename($url);你能告诉我这里 $file 的输出吗? 查看这篇文章。它可能会帮助你。 ***.com/questions/4545311/… 【参考方案1】:

就 ajax 而言,您不能通过 ajax 做到这一点,因为 ajax 不是为此目的而制作的,它是一个异步调用,会给您一个结果。但是你可以在不使用任何 jquery、ajax 的情况下做到这一点

&lt;a href="http://www.malayatourism.com/uploads/images/packages/pdf/$pid.pdf" download&gt; Download Attachment&lt;/a&gt;

其中 $pid 是您要下载文件的 id。下载属性将强制文件下载。干杯

【讨论】:

以上是关于尝试使用 Ajax 从远程服务器下载文件,但 Codeigniter 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用Ajax下载DOCX文档

如何从受保护的文件夹中使用PHP和AJAX提供安全的文件下载?

为啥从远程 AWS S3 服务器下载 json 文件时 axios GET 错误

使用 Ajax 从 Servlet 下载文件

使用 Phonegap、AJAX、PHP 和 mySQL 登录不工作

在开始下载之前,如何获取远程文件的大小?