2016-05-17 75 views
0

因此,我尝试使用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' => 'Продукт добавен успешно!']); 
} 

我需要让我的文件和他们的名字,并将其上传到我的图片文件夹。

回答

1

您的$ productImage是一个字符串,而不是文件。

$files = Input::file('productImage'); 
foreach($files as $file) { 
    $file->move(...); 
    .... 
+0

我试过这个解决方案。我得到了为foreach()提供的无效参数 - – Codearts

+1

向我们显示您的控制器代码。你可能在那里犯了一些错误。 –

+0

我编辑了我的问题。你可以在那里看到我的控制器。 – Codearts

0

你可以使用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); 
} 
+0

在问这个问题之前,我尝试了他的解决方案。对于你和他,我都会得到 - 为foreach()提供的无效参数 - – Codearts

+0

@Codearts确保你在班级顶部使用Illuminate \ Http \ Request;'你使用的是什么laravel版本? –

+0

虽然我确实使用它们。 – Codearts

相关问题