2013-05-02 18 views
0

我有一個表單,當我驗證我想重定向用戶到謝謝頁,然後強制下載文件 這裏發生了什麼是重定向用戶到下載頁面(空白頁),然後下載開始..當我刪除重定向功能的「刷新」它下載的文件即時 這裏是我的代碼在Codeigniter強制下載,然後留在感謝頁

控制器

public function index() 
{ 

    if ($this->form_validation->run('price') == FALSE) { 
     // Validation problems 
     $this->load->view('control_front', array('page' => 'price')); 
    } 
    else 
    { 

     redirect('price/thanks', 'refresh'); 
    } 
} 
public function download() 
{ 

    $this->load->helper('download'); 
    $data = file_get_contents("./uploads/price-list-2013.pdf"); // Read the file's contents 
    $name = 'pricelist.pdf'; 

    force_download($name, $data); 
      // doesn't go the view page 
    $this->load->view('control_front', array('page' => 'thanks')); 

} 

我需要做什麼是加載謝謝頁然後fo rce下載..我該怎麼做?

+0

您將需要使用JavaScript。如果你擔心javascript關閉的人(這很少),你可以添加一個鏈接,說「如果你的下載沒有自動開始,請點擊這裏」 – jah 2013-05-02 12:36:43

回答

0

我通常在js文件中使用這個函數,在setTimeout裏面延遲X秒。 你可以把這個代碼和文件路徑放在php視圖中。

function downloadURL(url) 
{ 
    var iframe; 
    iframe = document.getElementById("hiddenDownloader"); 
    if (iframe === null) 
    { 
     iframe = document.createElement('iframe'); 
     iframe.id = "hiddenDownloader"; 
     iframe.style.visibility = 'hidden'; 
     document.body.appendChild(iframe); 
    } 
    iframe.src = url; 
} 


+1

也許給你的代碼片斷做一個小的解釋?對於新來的人可能不太明顯javascript – 2013-05-02 08:49:53

+0

但我不想使用JavaScript ..我想要感謝頁然後下載PDF文件 – osos 2013-05-02 09:02:20