我有这个解决方案,通过选择正在运行的存储文件夹来上传用户配置文件的图像。 问题是如何将图像扩展到银行,或者如何在控制器中验证其他任何人可以帮助我的扩展?
控制器
public function getAccount()
{
return view('account', ['user' => Auth::user()]);
}
public function postSaveAccount(Request $request)
{
$this->validate($request, [
'email' => 'required|email|max:100'
]);
$user = Auth::user();
$old_email = $user->email;
$user->email = $request['email'];
$user->update();
$file = $request->file('image');
$file_email = $request['email'] . '-' . $user->id . '.jpg';
$old_file_email = $old_email . '-' . $user->id . '.jpg';
$update = false;
if (Storage::disk('local')->has($old_file_email)) {
$old_file = Storage::disk('local')->get($old_file_email);
Storage::disk('local')->put($file_email, $old_file);
$update = true;
}
if ($file) {
Storage::disk('local')->put($file_email, File::get($file));
}
if ($update && $old_file_email !== $file_email) {
Storage::delete($old_file_email);
}
return redirect()->route('account');
}
public function getUserImage()
{
$user = Auth::user();
$image ="". $user->email . '-' . $user->id . '.jpg';
$file = Storage::disk('local')->get($image);
return Response::make($file,200,[ 'Content-Type' => 'image/jpeg']);
}
路线
Route::get('/account', [
'uses' => 'UserController@getAccount',
'as' => 'account'
]);
Route::post('/upateaccount', [
'uses' => 'UserController@postSaveAccount',
'as' => 'account.save'
]);
Route::get('/userimage', [
'uses' => 'UserController@getUserImage',
'as' => 'account.image'
]);
查看
<img src="{{ route('account.image')}}">
存储库GitLab https://gitlab.com/ronnyere/imageUploadLaravel.git
答案 0 :(得分:0)
我建议您使用一个分机来存储上传的图像
要将所有可能的图片扩展程序编码为一个扩展程序,您可以使用Intervention Image
您可以使用...
更改所有上传图片的扩展名jpg
您也可以将{{1}}更改为其他扩展程序