您好,我用Laravel制作了一个表单来上传照片,但当我打开表单时,它显示错误:为foreach()提供的参数无效。
刀片文件:
<form method="POST" action="{{ route('admin.product.alternateimages') }}" enctype="multipart/form-data" class="add-new-post">
@csrf
<strong class="text-muted d-block mb-2 mt-5">Upload Product Image</strong>
<div class="input-group mb-3">
<div class="input-group input-group-seamless">
<input type="file" name="product_alt_img[]" class="form-control mb-2 btn btn-sm btn-outline-primary mr-1 @error('product_image') is-invalid @enderror" value="{{ old('product_image') }}" id="" placeholder=""> </div>
@error('product_image')
<div class="small text-danger">{{ $message }}</div>
@enderror
</div>
</form>功能:
public function alternateimages(Request $request)
{
$altimgs = new Product;
$altimgs->product_id = $request->product_id;
$files = $request->file('product_alt_img');
foreach ($files as $file) {
$images = $file->getClientOriginalName();
$file->move(public_path('images/backend_images/product_images'), $images);
$altimgs->product_alt_img = $images;
}
$altimgs->save();
return redirect()->back()->with('flash_message_success', 'Product Images has been added successfully');
}发布于 2019-08-31 14:49:02
如果要上载单个文件,则可能需要将product_alt_img[]更改为product_alt_img。
<input type="file" name="product_alt_img" class="form-control mb-2 btn btn-sm btn-outline-primary mr-1 @error('product_image') is-invalid @enderror" value="{{ old('product_image') }}" id="" placeholder="">否则,如果希望上传多个文件,您可能必须修改控制器方法。
public function alternateimages(Request $request)
{
$altimgs = new Product;
$altimgs->product_id = $request->product_id;
//fetch an array of product_alt_img
$files = $request->product_alt_img;
//go over each Illuminate\Http\UploadedFile instance
foreach($files as $file)
{
$image = $file->getClientOriginalName();
....
}
....
}注:一个更有说服力的解决方案是有一个单独的表来存储产品图像
https://stackoverflow.com/questions/57735797
复制相似问题