Загрузка нескольких файлов Laravel для одного элемента с проверкой - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь загрузить несколько файлов для одной строки, используя Laravel и Ajax.Для одного изображения это работает хорошо, но когда я пытаюсь загрузить несколько изображений, всегда получаю сообщение об ошибке: «Файл должен быть файлом типа: JPEG, PNG, BMP, GIF, SVG, DOCX, XLSX, PDF».Я хочу сделать что-то вроде этого:

id | client_id | files
---|-----------|------
1  | 1         | image.png, test.pdf
---|-----------|------
2  | 2         | imag3.png, test.docx

tasks.blade.php

<form method="post" id="addTask_form" name="addtask" enctype="multipart/form-data">
    ..........
            <div class="form-group">
                <label>File</label>
                 <input type="file" name="file[]" id="file" multiple />
            </div>

TasksController.php

$validation = Validator::make($request->all(), [
            'employee_id' => 'required',
            .......
            'file' => 'nullable|mimes:jpeg,png,bmp,gif,svg,docx,xlsx,pdf',    


            ]);

if($request->hasFile('file')){
               $image = $request->file('file');
               $data = [];
               foreach ($image as $img) {
                    $new_name = rand() . '.' . $img->getClientOriginalExtension();
                    $img->move(public_path('uploads'), $new_name);
                    $data[] = $new_name;



               $task = Task::find($request->get('task_id'));

            $task->employee_id = $request->get('employee_id');
            ..............
            $task->file = json_encode($data);   



            $task->save();
            }
            }

Чем мне нужно получить каждыйзначение массива в виде отдельной строки в моем datatable для того, чтобы он мог быть активнымНапример:

    id | client_id | files
    ---|-----------|------
    1  | 1         | 287319667.jpg | 2074802246.jpg
    ---|-----------|------
    2  | 2         | 2074802246.jpg | 2074802246.jpg

Вот мой столбец с данными:

return Datatables::of($tasks)


       ->editColumn('link', function ($link) {

               return '<a href="public/uploads/'.$link->file.' >'.$link->file.'</a>';


        })

, и он возвращает полный массив, например: ["287319667.jpg", "2074802246.jpg"] Итак, янужно показать так: 287319667.jpg |2074802246.jpg.

Заранее спасибо

1 Ответ

0 голосов
/ 11 марта 2019

То, что вы делаете, будет работать для одного файла, если вы хотите проверить несколько файлов, используйте это

'file.*' => 'required|file|mimes:xlsx,xls,csv,jpg,jpeg,****'
...