Idi*_*ssi 5 amazon-s3 laravel intervention
当用户上传他的个人资料图片时,我想为这张图片创建 3 个不同尺寸的版本,然后将所有内容上传到亚马逊 s3。
我使用图像干预包来调整图像大小,这是我目前的代码。
public function store(Request $request){
if($request->has('avatar')){
$avatar = $request->file('avatar');
$filename = md5(time()).'_'.$avatar->getClientOriginalName();
$normal = Image::make($avatar)->resize(160, 160);
$medium = Image::make($avatar)->resize(80, 80);
$small = Image::make($avatar)->resize(40, 40);
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatars/normal/'.$filename, fopen($normal, 'r+'), 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatars/medium/'.$filename, fopen($medium, 'r+'), 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatars/small/'.$filename, fopen($small, 'r+'), 'public');
$user = User::findorFail(Auth::user()->id);
$user->avatar = $filename;
$user->save();
return redirect()->back();
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试提交文件时,出现此错误。
fopen(): Filename cannot be empty
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏
Idi*_*ssi 13
更新我让它像这样工作,如果有人有同样的问题,我希望他会发现这段代码有帮助。
public function store(Request $request){
if($request->has('avatar')){
$avatar = $request->file('avatar');
$extension = $request->file('avatar')->getClientOriginalExtension();
$filename = md5(time()).'_'.$avatar->getClientOriginalName();
$normal = Image::make($avatar)->resize(160, 160)->encode($extension);
$medium = Image::make($avatar)->resize(80, 80)->encode($extension);
$small = Image::make($avatar)->resize(40, 40)->encode($extension);
//$path = '/users/'.Auth::user()->uuid.'/avatar/normal/'.$filename;
//dd($normal);
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatar/normal/'.$filename, (string)$normal, 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatar/medium/'.$filename, (string)$medium, 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatar/small/'.$filename, (string)$small, 'public');
$user = User::findorFail(Auth::user()->id);
$user->avatar = $filename;
$user->save();
return redirect()->back();
}
}
Run Code Online (Sandbox Code Playgroud)