加载页面等待一秒钟,然后使用Codeigniter v2下载文件

时间:2012-03-19 14:59:31

标签: php codeigniter download

我有一个控制器,简而言之如下:

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
}

我想要页面视图,然后在第二次强制下载文件后 - 当前函数下载文件而不是视图,有人可以建议如何解决这个问题吗?

2 个答案:

答案 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)

您需要执行两项操作:

  1. 显示下载页面($this->renderPage(...))。
  2. 使浏览器下载文件(force_download(...))。
  3. 在第一个中,你会在头部向重定向器添加一些javascript或元标记,然后在一秒钟之后添加到第二个动作。

    将显示下载页面,然后在一秒钟后,提供下载。