Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 图像干预保存路径_Laravel_Intervention - Fatal编程技术网

Laravel 图像干预保存路径

Laravel 图像干预保存路径,laravel,intervention,Laravel,Intervention,我的问题是如何在需要保护图像时创建合适的路径。我尝试了教程和之前的干预,所以回答了问题,但无法应用建议的解决方案。我在拉威尔使用图像干预 我当前的路径是: $filenameWithExtThumb = $request->file("thumbnail")->getClientOriginalName(); $filenameThumb = pathinfo($filenameWithExtThumb, PATHINFO_FILENA

我的问题是如何在需要保护图像时创建合适的路径。我尝试了教程和之前的干预,所以回答了问题,但无法应用建议的解决方案。我在拉威尔使用图像干预

我当前的路径是:

            $filenameWithExtThumb = $request->file("thumbnail")->getClientOriginalName();
            $filenameThumb = pathinfo($filenameWithExtThumb, PATHINFO_FILENAME);
            $extensionThumb = $request->file("thumbnail")->getClientOriginalExtension();
            $fileNameToStoreThumb = $filenameThumb."_".time().".".$extensionThumb;

            $image_resize = Image::make($request->file("thumbnail")->getRealPath());              
            $image_resize->resize(320, 240);

            $pathThumb = $request->file("thumbnail")->storeAs("public/".auth()->user()->name."'s Thumbnails", $fileNameToStoreThumb);
如果我不调整大小就可以保存它。如果我使用

$pathThumb = $image_resize->storeAs("public/".auth()->user()->name."'s Thumbnails", $fileNameToStoreThumb);
它不起作用。 我还尝试:

$image_resize->save("/public/storage/".auth()->user()->name."'s Thumbnails");
这也不起作用。 及

我想用这个:

$pathThumb = $request->file("thumbnail")->storeAs("public/".auth()->user()->name."'s Thumbnails", $fileNameToStoreThumb);
使用
$image\u resize
。有可能吗?怎么可能

我的道路是: 公共/存储.auth()->user()->name.“的缩略图”,$filenametostorembum 示例:
public/storage/->Johnny的缩略图->文件名.jpg

Edit1: 通过执行如下路径解决:
$pathThumb=$image\u resize->save(公共路径(“存储/”.auth()->user()->name.”的缩略图/“$filenametostorehumb”)

现在我想删除以前的缩略图,除非它不是“nothumbnail.jpg”

这也是一个路径问题:(

Edit2:edit1的解决方案: 几个小时后,我并没有发现错误,因为我修改了太多的原始代码,以至于我一辈子都找不到它。 所以我意外地想出了一个非常偶然的解决方案:

                $filenameWithExtThumb = null;
                $filenameThumb = null;
                $extensionThumb = null;
                $fileNameToStoreThumb = null;
                $image_resize = null;
                $pathThumb = null;

                if($request->hasFile("thumbnail")){

                    $filenameWithExtThumb = $request->file("thumbnail")->getClientOriginalName();
                    $filenameThumb = pathinfo($filenameWithExtThumb, PATHINFO_FILENAME);
                    $extensionThumb = $request->file("thumbnail")->getClientOriginalExtension();
                    $fileNameToStoreThumb = $filenameThumb."_".time().".".$extensionThumb;

                    $image_resize = Image::make($request->file("thumbnail")->getRealPath());              
                    $image_resize->resize(320, 240);

                    $pathThumb = $image_resize->save(public_path("storage/".auth()->user()->name."'s Thumbnails/".$fileNameToStoreThumb));

                    if($video->thumbnail!=="../nothumbnail.jpg"){

                        unlink(public_path("storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail));
                        $video->thumbnail = $fileNameToStoreThumb;

                    }

                    if($video->thumbnail==="../nothumbnail.jpg"){

                        $video->thumbnail = $fileNameToStoreThumb;

                    }

                }
                else{

                    if($video->thumbnail!=="../nothumbnail.jpg"){

                        unlink(public_path("storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail));
                        $video->thumbnail = "../nothumbnail.jpg";

                    }

                    if($video->thumbnail==="../nothumbnail.jpg"){

                        $video->thumbnail = "../nothumbnail.jpg";

                    }

                }

虽然没有使用Storage facade,但vanilla php取消了文件删除链接。不使用Laravel的内置功能而不是vanilla的功能可以吗?

我认为存储路径有点混乱。请尝试此代码,并确保您已使用
php artisan Storage:link


这应该会将文件保存到存储器/app/public/User's Thumbnails/filename.ext链接自/public/storage/User's Thumbnails/filename.ext

我认为存储路径有些混乱。请尝试此代码,并确保您已使用
php artisan storage:link


这应该将文件保存到存储/app/public/User's Thumbnails/filename.ext,链接自/public/storage/User's Thumbnails/filename。ext

解决了这个问题。请参阅编辑。我还有一个问题,请参阅编辑。请参阅编辑2。更重要的是,请参阅底部的问题。解决了这个问题。请参阅编辑。我还有一个问题,请参阅编辑另外,请参见edit2。更重要的是,请参见它底部的问题。我会从路径名中删除
。首先,我猜,一眼就可以看出。即使路径名中有空格,我也会觉得很奇怪,所以试着删除它们。我会从路径名中删除
。首先,我猜,一眼就可以看出。即使路径名中有空格,我也会觉得很奇怪我觉得很奇怪,所以试着把它们也扔了。
                if ($request->hasFile('thumbnail')) {

                    if($video->thumbnail==="../nothumbnail.jpg"){

                        $video->thumbnail = $fileNameToStoreThumb;
                    }       

                    if($video->thumbnail!=="../nothumbnail.jpg"){
                        Storage::delete("public/storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail);

                        $video->thumbnail = $fileNameToStoreThumb;
                    }   

                }
                else{

                    if($video->thumbnail==="../nothumbnail.jpg"){

                        $video->thumbnail = "../nothumbnail.jpg";
                    } 

                    if($video->thumbnail!=="../nothumbnail.jpg"){
                        Storage::delete("public/storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail);

                        $video->thumbnail = "../nothumbnail.jpg";
                    } 

                }
                $filenameWithExtThumb = null;
                $filenameThumb = null;
                $extensionThumb = null;
                $fileNameToStoreThumb = null;
                $image_resize = null;
                $pathThumb = null;

                if($request->hasFile("thumbnail")){

                    $filenameWithExtThumb = $request->file("thumbnail")->getClientOriginalName();
                    $filenameThumb = pathinfo($filenameWithExtThumb, PATHINFO_FILENAME);
                    $extensionThumb = $request->file("thumbnail")->getClientOriginalExtension();
                    $fileNameToStoreThumb = $filenameThumb."_".time().".".$extensionThumb;

                    $image_resize = Image::make($request->file("thumbnail")->getRealPath());              
                    $image_resize->resize(320, 240);

                    $pathThumb = $image_resize->save(public_path("storage/".auth()->user()->name."'s Thumbnails/".$fileNameToStoreThumb));

                    if($video->thumbnail!=="../nothumbnail.jpg"){

                        unlink(public_path("storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail));
                        $video->thumbnail = $fileNameToStoreThumb;

                    }

                    if($video->thumbnail==="../nothumbnail.jpg"){

                        $video->thumbnail = $fileNameToStoreThumb;

                    }

                }
                else{

                    if($video->thumbnail!=="../nothumbnail.jpg"){

                        unlink(public_path("storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail));
                        $video->thumbnail = "../nothumbnail.jpg";

                    }

                    if($video->thumbnail==="../nothumbnail.jpg"){

                        $video->thumbnail = "../nothumbnail.jpg";

                    }

                }
if ($request->hasFile('thumbnail') && $request->file('thumbnail')->isValid()) {
    $extension = $request->file("thumbnail")->getClientOriginalExtension();
    $image_resize = Image::make($request->file('thumbnail'));
    $image_resize->resize(320, 240);
    $hash = md5($image_resize->__toString());
    $filename = $hash . "." . $extension;
    $image_resize->save(storage_path("app/public/" . auth()->user()->name . "'s Thumbnails/" . $filename)); 
}