Загрузите страницу, подождите секунду, затем загрузите файл, используя Codeigniter v2 - PullRequest
1 голос
/ 19 марта 2012

У меня есть контроллер, который в двух словах выглядит следующим образом:

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 ]

2 голосов
/ 19 марта 2012

Удалить строку, следующую строку из функции загрузки

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;   
}
0 голосов
/ 19 марта 2012

Вам нужно выполнить два действия:

  1. Для отображения страницы загрузки ($this->renderPage(...)).
  2. Чтобы браузер загрузил файл (force_download(...)).

В первом случае вы добавляете некоторый javascript или метатег в заголовке для перенаправления во второе действие через секунду.

Будет отображена страница загрузки, а затем через секунду предложенная загрузка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...