0

我使用 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);

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

也许我的逻辑代码仍然是错误的

我怎么解决这个问题?

4

1 回答 1

1

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

你可以这样做,

$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);

我希望你能理解。

于 2018-02-24T01:38:19.547 回答