为什么图像没有保存在 laravel 上的缩略图文件夹中?

Why image not saved in thumb folder on laravel?

我用laravel 5.6

我上传图片的方法是这样的:

public function uploadImage($file) {
    if($file) {
        $fileName = str_random(40) . '.' . $file->guessClientExtension();
    }
    $destinationPath = storage_path() . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'product';
    if(!File::exists($destinationPath)) {
        File::makeDirectory($destinationPath, 0755, true);
    }
    $file->move($destinationPath, $fileName);
    return $fileName;
}

代码有效。如果方法运行,它会在产品文件夹

中保存一个文件

不过我想补充一个逻辑。如果图像成功保存在产品文件夹中,那么它将在文件夹产品中创建一个文件夹缩略图

我尝试在 $file->move($destinationPath, $fileName); 下面添加此代码,如下所示:

$destinationPathThumb = storage_path() . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'product' . DIRECTORY_SEPARATOR . 'thumb';
if(!File::exists($destinationPathThumb)) {
    File::makeDirectory($destinationPathThumb, 0755, true);
}
$file->move($destinationPathThumb, $fileName);

然后我运行我的方法,产品文件夹里的图片上传成功。但是图片在thumbs文件夹中没有上传成功。似乎代码:$file->move($destinationPathThumb, $fileName); 不工作

可能我的逻辑代码还是有问题

我该如何解决这个问题?

您需要复制文件,因为单个图像的多次移动不会提供您想要的结果。

你可以这样做,

$destinationPathThumb = storage_path() . DIRECTORY_SEPARATOR . 'app' .   DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'product' . DIRECTORY_SEPARATOR . 'thumb';
if(!File::exists($destinationPathThumb)) {
    File::makeDirectory($destinationPathThumb, 0755, true);
}

Storage::copy($destinationPath. DIRECTORY_SEPARATOR . $fileName , $destinationPathThumb . DIRECTORY_SEPARATOR . $fileName);

希望您能理解。