2016-07-23 5 views
0

Ich möchte die Datei Array speichern, aber ich habe ein Problem, das ist mein HTML-CodeLaravel Datei Array-Speicher

<div> 
<input type="file" name tmp[]></input> 
<textarea name="text[]"></textarea> 
</div> 
<div> 
<input type="file" name tmp[]></input> 
<textarea name="text[]"></textarea> 
</div> 

und mein Controller

foreach ($request->input('text') as $key => $step){ 
$data = new Step; 
if($request->hasFile('tmp[$key]'){ 
$file = $request->tmp[$key]; 
    $extension = $file->getClientOriginalExtension(); 
    $file_name = strval(time()).str_random(5).'.'.$extension; 

    $destination_path = public_path().'/step-upload/'; 
    $data->img_url = $file_name; 
    $upload_success = $file->move($destination_path, $file_name); 

} 
$data->text=$step; 

aber es hat nicht funktioniert, ich finde heraus, dass api hasFile (array) nicht unterstützt, es unterstützt nur hasFile (string $ key)

und auch ich entfernen if ($ request-> hasFile ('tmp [$ key]') {} aber finden egal, wie viele Eingabedateien darin enthalten sind, es fängt nur die erste einGibt es eine Lösung?

Antwort

3

Angenommen, Ihr HTML ist eigentlich korrekt und Sie verwenden den richtigen Enctype auf Ihrem form.

Laravel verwendet seine Punktanmerkungsfunktion in der hasFile-Funktion. Also, was Sie tun möchten, ist ('tmp.' . $key) anstelle von 'tmp[$key]' (was falsch ist, read up opon double vs single quotes).

Also, sollten Sie den Code wie folgt aussehen:

foreach ($request->input('text') as $key => $step) { 
    if ($request->hasFile('tmp.' . $key)) { 
     $file = $request->file('tmp.' . $key); 
     // work with $file 
    } 
} 
+0

Dank! es ist Arbeit! schätzen! –