Laravel - 从请求中上传多个文件并将它们移动到一个文件夹中
问题描述:
因此,我尝试使用Input进行文件上传,但很失败。我试图用Request
做到这一点,但我得到了如下错误:Laravel - 从请求中上传多个文件并将它们移动到一个文件夹中
Call to a member function move() on string
刀片:
<input type="file" name="productImage[]" id="" multiple>
控制器:
public function addProduct(Request $request)
{
$this->validate($request, [
'title' => 'required',
'description' => 'required',
'details' => 'required',
'price' => 'required',
'subcategory' => 'required',
'color' => 'min:1',
'size' => 'min:1',
'productImage' => 'min:1'
]);
$product = new Product();
$product->subcategory_id = $request['subcategory'];
$product->gender_id = $request['gender'];
$product->title = $request['title'];
$product->description = $request['description'];
$product->details = $request['details'];
$product->price = $request['price'];
$product->save();
foreach ($request['color'] as $color_id) {
$color = Color::find($color_id);
$product->colors()->save($color);
}
foreach ($request['size'] as $size_id) {
$size = Size::find($size_id);
$product->sizes()->save($size);
}
foreach ($request->file('productImage') as $productImage) {
$file = $productImage;
$file->move('images', $file->getClientOriginalName());
$image = new Image();
$image->product_id = $product->id;
$image->path = $file->getClientOriginalName();
$product->images()->save($image);
}
return redirect()->route('admin.products')->with(['added' => 'Продукт добавен успешно!']);
}
我需要让我的文件和他们的名字,并将其上传到我的图片文件夹。
答
尝试使用move_uploaded_file
而不是move
。
尝试检查出此链接:PHP - Move a file into a different folder on the server
它解释更详细。
答
您的$ productImage是一个字符串,而不是文件。
$files = Input::file('productImage');
foreach($files as $file) {
$file->move(...);
....
答
你可以使用Felippe杜阿尔特的解决方案或获得与Request
所上传的所有文件,打电话来的方法是这样的:问这个问题之前
foreach ($request->file('productImage') as $productImage) {
$file = $productImage;
$file->move('images', $file->getClientOriginalName());
$image = new Image();
$image->product_id = $product->id;
$image->path = $file->getClientOriginalName();
$product->images()->save($image);
}
我试过这个解决方案。我得到了为foreach()提供的无效参数 - – Codearts
向我们显示您的控制器代码。你可能在那里犯了一些错误。 –
我编辑了我的问题。你可以在那里看到我的控制器。 – Codearts