2016-05-17 29 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

相關問題