2014-02-13 132 views
0

我的圖片上傳不起作用:圖片上傳表單laravel

控制器:

if (Input::hasFile('image')) { 
     $bikecreate->image = Input::file('image'); 
     $destinationPath = public_path().'/upload/'; 
     $filename = str_random(6) . '_' . $bikecreate->users_id ; 
     Input::file('image')->move($destinationPath, $filename); 
    } 

形式:

{{ Form::file('image', array('files' => true)) }} 

後接受的形式一切看起來都不錯,但上傳結束後,數據庫中的文件路徑在我的服務器上顯示.tmp /文件。

回答

1

沒有看到代碼的其餘部分,很難看到究竟發生了什麼,但我的猜測是您的行$bikecreate->image = Input::file('image')是您爲數據庫設置文件路徑的位置。實際上,您已將UploadedFile實例設置爲$bikecreate上的image屬性,這可能是在序列化爲要放入數據庫中的某個事件時調用。

__toString()叫上一個File實例(它本身繼承SPLFileInfo __toString返回的路徑文件。所以,你會覺得你得到了上傳的文件名,但實際上因爲上傳的文件實際上是在PHP中的臨時文件,你得到的臨時名稱

嘗試改變該行於以下內容:。

$bikecreate->image = Input::file('image')->getClientOriginalName(); 

這將檢索上傳的文件,而不是由PHP給它的臨時道路的實際原名

毫無疑問,這隻與UploadedFile有關,正常的文件應該只能是__toString以獲取文件的路徑,但您會注意到它將是完整路徑而不是基本名稱。爲了得到這個,使用getBaseName()

+0

它的工作原理!非常感謝 ! :) – user3305675