2013-03-15 159 views
3

無法上傳文件。 $this->upload->do_upload('anonsphoto');返回false。找不到原因。codeigniter文件上傳失敗

我加上傳庫自動加載這樣:$autoload['libraries'] = array('upload');

這是我的觀點:

<?php 
echo form_open_multipart('InterviewController/saveInterview'); 

$anons_data = array(
    'name'  => 'anons', 
    'id'   => 'anons_area', 
    'value'  => 'Введите анонс' 
); 
echo form_textarea($anons_data); ?> 

<p>Картинка анонса</p> 
<?php 
echo form_upload('anonsphoto'); ?> 

這裏是控制器,上傳文件:

public function saveInterview() { 
    $config['upload_path'] = '/application/upload/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '10000'; 
    $config['file_name'] = 'img_' . (string) time(); 
    $this->upload->initialize($config); 

    $this->upload->do_upload('anonsphoto'); 
    return; 
} 

上傳的文件是3 KB大小PNG文件。我不明白爲什麼do_upload返回false。有任何想法嗎?

+1

codeigniter無法覆蓋php.ini中設置的上傳限制。檢查upload_max_size值是什麼。 – 2013-03-15 20:23:24

+1

嘗試'echo $ this-> upload-> display_errors();'。 – 2013-03-15 20:23:32

回答

3

文件上傳類說明你所需要的一切。 https://www.codeigniter.com/userguide3/libraries/file_uploading.html

這是一個關鍵: 「」

$config['upload_path'] = './uploads/'; 
$config['allowed_types'] = 'gif|jpg|png'; 
$config['max_size'] = '100'; 
$config['max_width'] = '1024'; 
$config['max_height'] = '768'; 

$this->load->library('upload', $config); 

// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class: 
$this->upload->initialize($config); 

(點)表示當前上傳路徑的目錄。所以你的應用程序不工作,因爲你的根路徑不是以(點)開始的。

你的文件夾應該是具有完全的權限(CHMOD)到0755

此:

$config['upload_path'] = './uploads/'; 

意味着:當前目錄和上傳目錄

或:

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/application/upload/'; 

表示:您的完整文檔URI路徑和目錄'/application/upload/'爲C一個說。

不要忘記把(點)。在$_SERVER['DOCUMENT_ROOT']'/application/upload'之間。

最大尺寸應昆明植物研究所值:$config['max_size'] = '10000';

希望這有助於理解它是如何工作的。

+0

我解決了使用路徑'applicastion/upload'的問題。沒有點之前和沒有/。這是什麼意思? – 2013-03-15 20:37:22

+0

'.'點讓你確信它在你的當前目錄中。在linux上主要使用orted或FTP。如果你把'/'指向文件系統的根目錄,這也可以避免混淆。當你把'。/'表示去當前目錄。希望這可以幫助。 – 2013-03-15 20:41:05

+0

謝謝,馬林。 – 2013-03-15 20:43:50

0

我認爲你的上傳路徑是錯誤的。嘗試使用

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/application/upload/'; 

並確保該目錄是可寫的。