为什么图像没有保存在 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);
希望您能理解。
我用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);
希望您能理解。