2016-05-17 29 views
0

入力を使用してファイルをアップロードしようとしましたが、悲しいことに失敗しました。私はそれを行うには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' => 'Продукт добавен успешно!']); 
} 

ファイルとその名前をコピーして、自分のimagesフォルダにアップロードします。

答えて

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はあなたのクラスの一番上に 'use Illuminate \ Http \ Request; 'を持っていることを確認しています。どのバージョンのlaravelを使っていますか? –

+0

私はそれらを使用します。 – Codearts

関連する問題