【发布时间】:2017-10-17 00:02:03
【问题描述】:
我的控制器是这样的:
public function store(CreateProductRequest $request)
{
...
$result = $this->product_service->createProduct($param,$photo);
...
}
我的服务是这样的:
public function createProduct($param, UploadedFile $photo=null)
{
dd($photo);
if($photo) {
$fileName = str_random(40) . '.' . $photo->guessClientExtension();
$param['photo'] = $fileName;
$param['photo_list'] = json_encode(['id'=>1,'name'=>$fileName]);
}
...
if(is_array($result) && count($result)>1 && $result[0])
$this->savePhoto($photo, $fileName,$result[1]->id);
...
return $result;
}
private function savePhoto(UploadedFile $photo, $fileName, $id)
{
$destinationPath = public_path() . DIRECTORY_SEPARATOR . 'img'. DIRECTORY_SEPARATOR .'products'.DIRECTORY_SEPARATOR.$id;
$photo->move($destinationPath, $fileName);
resize_image($fileName,250,'products',$id);
return $fileName;
}
Symfony\Component\HttpFoundation\File\UploadedFile 是这样的:https://pastebin.com/KLfnXZJV
当变量$photo不是数组或只有1个数据时,我做dd($photo);,它显示结果
但是当变量$photo是数组时,我做dd($photo);,存在错误:
类型错误:参数 2 传递给 App\Services\ProductService::createProduct() 必须是 Symfony\Component\HttpFoundation\File\UploadedFile,给定数组
我该如何解决这个问题?
【问题讨论】:
-
$photo是在哪里定义的?您已提示createProduct方法类型,以便参数 必须 是UploadedFile的实例。 -
@Jeremy Harris,它在控制器中定义。如果
$photo像这样:postimg.org/image/47t72locf,没有错误。但是$photo像这样:postimg.org/image/58qo0i8u7,存在错误 -
正如 Jeremy 所说,它必须是 UploadedFile 实例。能否提供更多控制器代码?
-
我认为您正在尝试进行多重上传?如果是这样,那么在您的控制器中,您需要遍历该照片数组,并为每一张照片调用
product_service->createProduct(..., ...)
标签: php laravel symfony upload laravel-5.3