2017-07-04 52 views
0

所以現在這已經是一個問題,我一會,它只是似乎沒有工作,我有一個表格,用戶可以提交一個新的配置文件picure:圖片來源與Laravel圖片干預無法讀取

<form enctype="multipart/form-data" action="/profile" method="POST"> 
    <input type="file" name="avatar"> 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
    <input type="submit" class="pull-right btn btn-sm btn-primary"> 
</form> 

當點擊該按鈕,他們將被重定向到激活以下功能的控制器:

public function update_avatar(Request $request) 
{ 
    $avatar = $request->avatar; 
    $extension = File::extension($avatar); 
    $filename = time() . '.' . $extension; 
    Image::make($avatar)->resize(350, 350)->save(public_path('/uploads/avatars/' . $filename)); 

    $user = Sentinel::getUser(); 
    $user->profile->avatar = $filename; 
    $user->save(); 
} 

但無論我做什麼,控制器總是返回消息

(1/1) NotReadableException

Image source not readable

有誰知道我該如何解決這個問題?

編輯:我已經改變了我的形象::使線以下:

$image = Image::make($avatar->getRealPath())->resize(350, 350)->save(public_path('/uploads/avatars/' . $filename)); 

但現在我遇到一個新的錯誤:

(1/1) FatalErrorException

Call to a member function getRealPath() on string

回答

0

試試這個:

Image::make($avatar->getRealPath())->resize(350, 350)->save(public_path('/uploads/avatars/' . $filename)); 

編輯: 利用這一點,找回您的UploadedFile

$avatar = $request->file('avatar'); 

編輯#2: 對於延長使用這個來代替:

$extension = $avatar->getClientOriginalExtension(); 

注:不要忘了授權只圖像文件您的驗證規則。

這一翻譯,你可以「硬編碼」的延長,干預是能夠節省&轉換成指定的圖像格式(JPG,PNG ..)

+0

它擺脫了第一個錯誤,但現在它顯示: **(1/1)FatalErrorException 在字符串**上調用成員函數getRealPath() – sebas2201

+0

您必須更改檢索上傳文件的方式。我編輯了我的帖子。 – OuailB

+0

當我包含你的**編輯**方法時,我得到一個數組,當dd'ing化身時,但現在我得到一個錯誤,不支持編碼格式:**不支持編碼格式(tmp)。**意味着它得到一個tmp文件而不是.jpg文件 – sebas2201