2017-06-21 71 views
2

我使用Laravel爲Android應用程序的後端。
我正在嘗試更新用戶X的頭像(在創建用戶時設置爲default.jpg)。但$request->File('avatar')爲空($request->hasFile('avatar')false)。Multipart/form-data Requests - Laravel/PHP

這是我在郵差發送(順便說一下我使用護照):

// Headers 
Accept: application/json 
Authorization: Bearer {{token}} 
Content-Type: multipart/form-data 

// Body of the request 
'avatar' -> the image (in postman) 

這是我的一些更新方法,用於管理該文件的一部分:

public function update(Request $request) 
{ 
    // some code 
    if($request->hasFile('avatar')) { 
     $avatar = $request->file('avatar'); 
     $filename = time() . '.' . $avatar->getClientOriginalExtension(); 
     Image::make($avatar)->resize(300,300)->save(public_path('/uploads/avatars/' . $filename)); 
     $user->avatar = $filename; 
    } 

    // code 
    $user->save(); 

    return something; 

我不知道我做錯了什麼。提前致謝。

+0

你可以在'$ request- > all()'上嘗試'var_dump''也許你的文件沒有正確發送? – shalvah

+0

@shalvah它返回空。現在,我正在嘗試在POST請求中執行此操作。 PUT方法似乎是問題所在。 – HCK

+1

哦。你從來沒有提到它是PUT。我不確定文件是否要用PUT上傳,即使它們是,它們也不會自動被Laravel解析到請求體中。 – shalvah

回答

2

經過一番研究,我可以使其工作,但使用POST請求添加_method = PUT作爲參數(http://www.someurl.dev?_method=PUT)。

處理文件PUT請求都不能正確處理 - 如果我不是錯 - on purpose

無論如何,這不就是我一直在尋找解決方案..但至少工作。

+1

哦,我的天哪,這就是我遇到的問題,我甚至沒有意識到這一點。我正在使用'PUT'並試圖上傳近24小時!最後我改成了'POST',它工作正常!感謝這個問題和解決方案!我其實早在幾天前就投了票,但忘了發表這個評論。 – Noitidart