2011-02-25 110 views
1

我在ie下載助手的麻煩..基本上我建立了一個網站,動態創建pdf發票和pdf證明在這兩種情況下強制下載在Firefox,鉻和歌劇偉大的工程。在IE失敗每次,我得到了以下錯誤: 無法下載從mysite.com $文件名Codeigniter強制下載IE

無法打開此Internet站點。請求的網站不可用或無法找到。請稍後再試。

要開始force_download我有指導以下控制器URL的錨點目標_blank:

 function view_uploaded_file($order = 0, $name = NULL){ 

     $this->load->helper('directory'); 

     $params['where'] = array('id' => id_clean($order)); 

     $data['order'] = $this->MOrders->get($params); 

     if($data['order']->id < 1){ 

      redirect('admin/orders'); 

     } 

     $name = db_clean(urldecode($name)); 

     $map = directory_map('./uploads/customer_order_uploads/'.$data['order']->user_id.'/'.$data['order']->id, 1); 

     if(is_array($map) && in_array($name, $map)){ 

      $this->load->helper('download'); 

      $data = file_get_contents('./uploads/customer_order_uploads/'.$data['order']->user_id.'/'.$data['order']->id.'/'.urldecode($name)); 

      force_download($name, $data); 

     } else { 

      redirect('admin/orders'); 

     } 

    } 

本來我想也許一個問題,我的IE瀏覽器,但我能夠下載其他網站上的PDF文件。然後,我認爲這可能是一個代碼下載助手的問題,但我看到他們已經在助手中爲IE做了特別的規定。

如果您有任何想法,請讓我知道。謝謝。

回答

2

坦率地說,我不確定爲什麼我們爲代碼點火器下載幫助程序而煩惱。

這並不完全是很難在純PHP做:

This Wonderful Question/Answer概述瞭如何做到這一點相當不錯。

要記住的真實情況是標頭的content-disposition: attachment部分。這是告訴瀏覽器該文件應該被下載&保存與試圖在瀏覽器中顯示它。

所有的瀏覽器在處理不同的事情,也許你有你的IE安裝的東西是壓倒一切的行爲,但如果你遵循鏈接的文章中的說明,您應該得到正確地在所有瀏覽器下載的文件。

本質上有三樣東西,我們需要告訴瀏覽器:

  • 內容類型
  • 文件名
  • 如何處理輸入數據
  • (可選四,如果你有的話)文件大小(內容長度)

然後你只轉儲數據RI輸出到輸出緩衝區。

響應

針對您的答覆,它可能是一個安全功能不會自動下載的東西在彈出窗口中,可能的新的事情之一即推出打擊他們以前的安全漏洞。

1

那麼我已經找到了至少一個問題的臨時解決方案。我所有的強制下載鏈接的目標_blank ..我創建了標準的非彈出式鏈接文件下載在IE中工作。可能有一些類型的工作,但我也意識到,真的沒有必要彈出窗口來下載。下載對話框已經達到了這個目的。

+0

您應該清理這個答案並標記爲接受的答案讓誰遇到在未來這個問題的人知道你是怎麼解決它。 – Aren 2011-02-25 17:41:46