Загрузка нескольких файлов в Laravel

#laravel #multiple-file-upload

#laravel #загрузка нескольких файлов

Вопрос:

Я хочу загружать несколько изображений одновременно, но это не работает.

Блейд / Просмотр

 <form action="{{ url('admin/image/upload') }}" method="POST"enctype="multipart/form-data">
@csrf
    <td><input type="text" name="Fields[0][title]" placeholder="Enter title" class="form-control" /></td>  
    <td><input type="file" name="Fields[0][image]" class="form-control" /></td>
</form>
 

Контроллер

 $request->validate([
            'Fields.*.title' => 'required|max:25|min:5',
            'Fields.*.image' => 'required',
        ]);
           if($request->hasFile('image'))
            {
            $file=$request->file('image');
            $file_name=hexdec(uniqid());
            $ext=strtolower($file->getClientOriginalExtension());
            $file_full_name=$file_name.'.'.$ext;
            $upload_path='image/';
            $file_url=$upload_path.$file_full_name;
            $success=$file->move($upload_path,$file_full_name);
        $Fields['image']=$file_url;
       foreach ($request->Fields as $key => $value) {
            images::create($value);
        }
     
         return back()->with('success', 'Image Has Been Saved Successfully.');
}
 

Комментарии:

1. проверьте эту строку if($request->hasFile('image')) , у вас нет ни одного файла, вызванного image

2. Что я должен написать?

3. Я думаю, вам не нужно динамическое поле здесь, измените name="Fields[0][image]" на name="image"

4. Мне нужно динамическое поле.

5. Если вы примете мой ответ, вы получите массив изображений и полей ввода, и вы должны получить доступ к throgh «foreach ($request->file(‘image’) как $img) { echo $img }»

Ответ №1:

Пожалуйста, следуйте приведенному ниже ответу:

напильник для лезвий

 <form action="{{ url('admin/image/upload') }}" method="POST"enctype="multipart/form-data">
@csrf
    <td><input type="text" name="Fields[]" placeholder="Enter title" class="form-control" multiple /></td>  
    <td><input type="file" name="image[]" class="form-control" multiple /></td>
</form>
 

контролер

 $request->validate([
    'Fields.*' => 'required|max:25|min:5',
    'image.*' => 'required',
]);
   if($request->hasFile('image'))
    {
        // dd($request->image) 
foreach ($request->image as $file) {

    dd($file)   
    //get filename with extension
    $filenamewithextension = $file->getClientOriginalName();
    //get filename without extension
    $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
    //get file extension
    $extension = $file->getClientOriginalExtension();
    //filename to store
    $filenametostore = $filename . '_' . time() . '.' . $extension;
}

 return back()->with('success', 'Image Has Been Saved Successfully.');
}
 

Комментарии:

1. Я получаю сообщение об ошибке » Вызов функции-члена getClientOriginalExtension() для массива »

2. Протестируйте с помощью dd (), затем продолжайте шаг за шагом

3. Я скопировал и вставил это.

4. скопировать, пройти сейчас и протестировать с помощью dd ()

5. вы не получаете никаких данных в функции dd ()?