首页 文章

Laravel无法上传存储文件夹中的文件

提问于
浏览
0

我曾经将我的上传文件(图片)存储在我的公共文件夹中,但这次我想将它们存储在我的存储文件夹中,我收到此错误

Can't write image data to path (C:\laragon\www\mynewsite\storage\images/aboutimage-1522481830.png)

错误来自这一行(我使用intervention/image包)

Image::make($image)->resize(1200, 600)->save($location);

我的功能:

if ($request->hasFile('image')) {
        $image = $request->file('image');
        $filename = 'aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
        $location = storage_path('images/' . $filename);
        Image::make($image)->resize(1200, 600)->save($location);

        $oldFilename = $indexabout->image;
        $indexabout->image = $filename;
        Storage::delete($oldFilename);
}

任何的想法?

更新

我的文件将上传到 root/storage 文件夹而不是 root/storage/app/public/images

这是为什么?

更新2

我将我的功能更改为下面的代码并将其上传到上传的位置但是 it does not delete the old image

if ($request->hasFile('image')) {
            $image = $request->file('image');
            $filename = '/aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
            $location = storage_path('app/public/images' . $filename);
            Image::make($image)->resize(1200, 600)->save($location);

            $oldFilename = $indexabout->image;
            $indexabout->image = $filename;
            Storage::delete($oldFilename);
}

1 回答

  • 1

    已解决

    这是最终代码:

    if ($request->hasFile('image')) {
                $image = $request->file('image');
                $filename = 'aboutimage' . '-' . time() . '.' . $image->getClientOriginalExtension();
                $location = storage_path('app/public/images/' . $filename); // root storage path
                Image::make($image)->resize(1200, 600)->save($location);
    
                Storage::delete('images/' . $indexabout->image); //public storage path
                $indexabout->image = $filename;            
            }
    

    基本上我给了 Root/Storage 路径来存储数据和 Public/Storage 路径以便在update方法中删除它们 .

相关问题