2010-08-19 69 views
1

嗨我很新的stackoverflow和codeigniter,所以我很抱歉,如果我打破這個問題的任何規則或禮節(我做了相關問題的搜索,沒有看到任何相關的問題直接回答我的問題)。上傳與codeigniter的PDF文件

我想上傳一個PDF文件,然後我用下面的代碼(笨版本1.7.2):

function test(){ 
     $this->load->library('upload'); 
     $config['upload_path'] = './assets/certificates/'; 
     $config['allowed_types'] = 'pdf'; 
     $config['max_size'] = '1000000'; 
     $config['file_name'] = "test"; 

     $this->upload->initialize($config); 
     $certificateflag = $this->upload->do_upload("certificate");  
     if ($this->upload->do_upload("certificate")) 
      error_reporting(E_ALL); 
     else{ 
      echo "<pre>"; Print_r($this->upload->data()); echo "</pre>"; 
     } 
} 

我沒有得到任何錯誤,它看來,文件被上傳,但它不會出現在目錄中,並且我無法在服務器上的任何位置找到它。上面的輸出給出了文件應該在哪裏的路徑,但它不在那裏。

我在另一部分中使用了幾乎確切的代碼塊,用於上傳到同一目錄並且工作正常的jpg文件。

任何幫助/想法,非常感謝。

+0

沒有關於CI的線索。無論如何,您應該在 - > do_upload()之前放置error_reporting()。如果這沒有顯示任何內容,請將打印語句放入 - > upload-> do_upload中。或者在CI初始化並取消設置之前退後一步並打印print_r($ _ FILES)。 「allowed_types」看起來很古怪,可能會在香草app/oct MIME類型或基本名稱文件上失敗。 – mario 2010-08-19 05:25:58

回答

1

起初,因爲我看到你正在調用方法do_upload兩次,我認爲你需要刪除其中的一個。在do_upload調用之後嘗試調用$ this-> upload-> display_errors()方法,它會給你一些錯誤。重新檢查它應該是「證書」的字段名稱,並檢查'​​./assets/certificates/'的chmod它應該是777. 希望這有助於。

+0

oops,當我在這裏粘貼代碼時,這是一個錯誤,但是您的建議幫助完全一樣,我在$ this-> upload-> display_errors()的調用中添加了,並且我找回了一些有意義的信息,結果證明文件被拒絕了,因爲它認爲它不是正確的文件類型,我在這裏搜索了一下,發現這是codeigniter中的一個錯誤,我不得不在配置文件中編輯mimes.php文件('application/pdf','application/x-pdf','application/octet-stream') 感謝您的幫助! – 2010-08-20 00:03:57