我有一个控制器,简而言之如下:
public function download($id) {
$data = array();
force_download($data['brochure']->location, $data['brochure']->name);
$this->renderPage('site/download', $data); // simple method basically same as load->view
}
我想要页面视图,然后在第二次强制下载文件后 - 当前函数下载文件而不是视图,有人可以建议如何解决这个问题吗?
答案 0 :(得分:2)
从下载功能
中删除以下行force_download($data['brochure']->location, $data['brochure']->name);
写另一个功能
public function download_file($id) {
$data = array();
force_download($data['brochure']->location, $data['brochure']->name);
}
现在在下载视图中添加以下javascript / jquery脚本:
$(document).ready(function(){
setTimeout(function(){
downloadFile('<your file location>')
},1000);
});
function downloadFile(url)
{
var iframe;
iframe = document.getElementById("download-container");
if (iframe === null)
{
iframe = document.createElement('iframe');
iframe.id = "download-container";
iframe.style.visibility = 'hidden';
document.body.appendChild(iframe);
}
iframe.src = url;
}
答案 1 :(得分:0)
您需要执行两项操作:
$this->renderPage(...)
)。force_download(...)
)。在第一个中,你会在头部向重定向器添加一些javascript或元标记,然后在一秒钟之后添加到第二个动作。
将显示下载页面,然后在一秒钟后,提供下载。