我无法将用户图片上传到公用文件夹。文件名生成正确,并将名称保存到我的数据库,除了iamge本身拒绝保存到我的公用文件夹。我做错了什么?
public function update_avatar(Request $request) {
if($request->hasFile('avatar')) {
$avatar = $request->file('avatar');
$filename = time() . "." . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300,300)->save(public_path('/uploads/'.$filename)); ==> This is causing me errors
user = Auth::user();
$user->avatar = $filename;
$user->save();
}
答案 0 :(得分:0)
公用磁盘适用于可公开访问的文件。默认情况下,
public
磁盘使用本地驱动程序并将这些文件存储在storage/app/public
中。要通过网络访问它们,您应创建从public/storage
到storage/app/public
的符号链接。此约定将使您可公开访问的文件保存在一个目录中,可以在部署中轻松共享。要创建符号链接,您可以使用
storage:link
Artisan命令:
php artisan storage:link
答案 1 :(得分:0)
我想你应该试试这个:
$destinationPath = public_path('uploads');
Image::make($avatar)->resize(300,300)->save($destinationPath.'/'.$filename);
答案 2 :(得分:0)
首先,您必须将图像移动到目标目录,然后调整其大小。
$avatar->move(public_path('/uploads/'.$filename));
Image::make(public_path('/uploads/'.$filename))->resize(300,300)->save(public_path('/uploads/'.$filename));
注意强>
检查您移动文件的目录是否已存在。