2016-05-17 5 views
0

Also habe ich versucht Datei hochzuladen mit Input, aber leider fehlgeschlagen. Ich versuche, Request zu verwenden, um es zu tun, aber ich bekomme die folgenden Fehler:Laravel - Laden Sie mehrere Dateien aus der Anfrage hoch und verschieben Sie sie in einen Ordner

Call to a member function move() on string

Klinge:

<input type="file" name="productImage[]" id="" multiple> 

Controller:

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' => 'Продукт добавен успешно!']); 
} 

Ich brauche meine zu bekommen Dateien und deren Namen und lade sie in meinen Bilderordner hoch.

Antwort

1

Ihr $ productImage ist eine Zeichenfolge, keine Datei.

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

ich diese Lösung versucht, bevor die Frage zu stellen. Ich bekomme -Invalid Argument für foreach() zur Verfügung gestellt - – Codearts

+1

Zeigen Sie uns Ihren Controller-Code. Du machst wahrscheinlich einen Fehler dort. –

+0

Ich habe meine Frage bearbeitet. Sie können meinen Controller dort sehen. – Codearts

0

Sie könnten Felippe Duarte-Lösung verwenden, oder alle Dateien mit der Request auch hochgeladen bekommen, ruft Methode wie folgt einzureichen:

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

Ich versuchte seine Lösung, bevor ich die Frage stellte. Mit beiden und ich bekomme -Invalid Argument für foreach() - – Codearts

+0

@Codearts stellen Sie sicher, dass Sie verwenden Illuminate \ Http \ Request; 'an der Spitze Ihrer Klasse, welche Laravel-Version verwenden Sie? –

+0

Ich benutze sie aber. – Codearts

Verwandte Themen