2012-11-15 13 views
1

我試圖在與CI註冊過程上傳個人資料照片($我!==「經歷」)試圖在Codeigniter中上傳照片 - 找不到我的上傳文件夾 - 想法爲什麼?

這裏是我的方法......沒什麼奇怪的

function do_upload() 
{ 
    $config['upload_path'] = base_url('/upload_pic/'); 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '100'; 
    $config['max_width'] = '1024'; 
    $config['max_height'] = '768'; 

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

    if (! $this->upload->do_upload()) 
    { 
     $data['message'] = $this->upload->display_errors() . $config['upload_path']; 
     $this->load->view('profile_photo_view', $data); 
    } 
    else 
    { 
     $data['message'] = $this->upload->data(); 
     $this->load->view('upload_success', $data); 
    } 
} 

..但它失敗了。正如你所看到的,我有傳遞給我的失敗,頁面顯示的上傳路徑,而這也正是它顯示..

The upload path does not appear to be valid. 
http://localhost:8888/MY_SITE/upload_pic 

在我的上傳文件夾。我有完整的777權限...

..任何想法可能是錯的什麼?並且隨後的斜槓總是會被剝離嗎?

回答

2

base_url會給你...等待它.. .a URL :)

您需要上傳路徑

$config['upload_path'] = '/full/path/to/upload_pic/'; 

,或者你可以使用相對路徑:

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

,但你必須給它一個路徑,而不是URL。

+0

謝謝。我想我認爲他們是可以互換的。例如,在CSS/HTML中都可以。我一直認爲「www.WEBROOT.com/mystuff」和webroot的「/ mystuff」是一樣的。我想這只是CI希望看到路徑格式。非常有意義。 –

+1

這不是CI ......這就是電腦工作的方式。當您在計算機上添加/刪除/移動文件時,應用程序需要知道將它們移動到何處。除了作爲接口的web服務器之外,移動或上傳文件與** WEB **服務器無關。一般規則是,如果您直接使用文件(包括,讀取,寫入,移動,創建)來做某件事,那麼您需要PATH;如果您正在請求Web服務器將使用的資源(css,js,html),則可以使用URL。乾杯! – stormdrain

+1

另外:'假設「www.WEBROOT.com/mystuff」與「/ mystuff」(來自webroot)'相同'。當處理需要PATH的東西時不需要。/mystuff會告訴應用程序查看名爲mystuff的文件夾的服務器根目錄。您可以執行./mystuff,它告訴應用程序在當前目錄中查找名爲mystuff的文件夾。 – stormdrain

-1

試試這個

$config['upload_path'] = base_url() . '/upload_pic/'; 

或裏面的index.php這

define('UPLOADS', 'upload_pic'); 

然後設置配置追加到

$config['upload_path'] = UPLOADS; 
+0

對不起,但我必須downvote你建議base_url()。正如stormdrain上面指出的,base_url()會給出一個URL,在這裏不起作用。需要一條路徑。 –

1

正如@stormdrain指出的那樣,base_url()用於獲取URL,而不是文件系統路徑。嘗試:

$config['upload_path'] = dirname(FCPATH) . '/upload_pic/'; 
+0

Thx。 dirname()提示點。 –