2013-10-13 80 views
0

我在使用laravel在虛擬主機上將文件上傳到服務器時遇到問題。Laravel - 使用虛擬主機上傳文件的問題

這裏的情況:當我嘗試上載有一個這樣的鏈接的絕對路徑:

if ($file->move('laravel.dev/upload', $file->getClientOriginalName())) { 
        echo 'uploaded'; 
       } 

該文件可以successsfully上傳儘管它會創建一個名爲「laravel.dev」文件夾,其中是我的主機,並在其中創建另一個名爲「上傳」的文件夾。在另一邊,如果我把我的代碼是這樣的:

if ($file->move(asset('uploaded'), $file->getClientOriginalName())) { 
        echo 'uploaded'; 
       } 

它拋出這個錯誤: Laravel Error

我想達到什麼是上傳文件,直接到我創建的「上傳」文件夾在「projectname/public /」公用文件夾中。我怎樣才能做到這一點?

回答

1

您可以改用$_SERVER['DOCUMENT_ROOT']

$var = $_SERVER['DOCUMENT_ROOT'].'/uploads'; 

if ($file->move($var, $file->getClientOriginalName())) { 
    echo 'uploaded'; 
} 

您使用的路徑不是像laravel.dev/upload這樣的URL。

+0

完美。謝謝。我沒有意識到:(對我感到羞恥.. – Bajongskie

0

正如Juan發佈的,您使用的是url路徑而不是文件路徑。 Laravel有一些path helpers來幫助你解決這個問題。

如果你想選擇一個文件夾,如public/uploaded,你可以使用public_path().'/uploaded。 如果你想選擇一個像app/storage/uploaded這樣的文件夾,你可以使用storage_path().'/uploaded

在您的例子,你可以使用此代碼:

if ($file->move(public_path().'/uploaded', $file->getClientOriginalName())) { 
    echo 'uploaded'; 
}