Загрузка нескольких файлов не обрабатывается в Laravel 6 - PullRequest
0 голосов
/ 27 января 2020

Я пишу API, используя Laravel 6, и у меня возникают некоторые проблемы с загрузкой файлов, фактически, с загрузкой любых файлов вообще.

Я использую Postman для тестирования API. В разделе params я ввожу имя, а затем в разделе body (form-data) я ввожу ключ filename и затем прикрепляю файл.

Когда я отправляю запрос, он возвращается со статусом all good, но не загружает файл и не сохраняет данные в базе данных.

Кроме того, если я не прикрепляю файл изображения, средство проверки возвращается с требуемым состоянием , но если я изменю это на текстовый файл, он ничего не скажет и вернется со статусом all good, поэтому он, похоже, пропускает часть filename.* и выполняет только первую проверку filename.

namespace App\Http\Controllers;

use App\ImageUpload;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Validator;

class ImageUploadController extends Controller
{
    public function store(Request $request): JsonResponse
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'filename' => 'required',
            'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
        ]);

        if ($validator->fails()) {
            return response()->json(['error validation failed'], 400);
        }

        if ($request->hasFile('filename')) {
            foreach ($request->file('filename') as $image) {
                $fileName = time().'.'.$image->getClientOriginalExtension();
                $image->move(public_path() . '/uploads', $fileName);

                $imageUpload = new ImageUpload();
                $imageUpload->name = $request->name;
                $imageUpload->filename = $fileName
                $imageUpload->save();
            }
        }

        return response()->json(['All good'], 200);
    }
}

если я dd($resposne) в самом верху, там находится файл, который я пытаюсь загрузить, см. Ниже;

+files: Symfony\Component\HttpFoundation\FileBag {#59
#parameters: array:1 [
  "filename" => Symfony\Component\HttpFoundation\File\UploadedFile {#44
    -test: false
    -originalName: "23367298-7883819-image-m-101_1578974555854.jpg"
    -mimeType: "image/jpeg"
    -error: 0
    path: "/tmp"
    filename: "phpAJtgNw"
    basename: "phpAJtgNw"
    pathname: "/tmp/phpAJtgNw"
    extension: ""
    realPath: "/tmp/phpAJtgNw"
    aTime: 2020-01-27 08:59:12
    mTime: 2020-01-27 08:59:12
    cTime: 2020-01-27 08:59:12
    inode: 266560
    size: 96981
    perms: 0100600
    owner: 1000
    group: 1000
    type: "file"
    writable: true
    readable: true
    executable: false
    file: true
    dir: false
    link: false
  }
]
}

1 Ответ

1 голос
/ 27 января 2020
   $validator = Validator::make($request->all(), [
        'name' => 'required',
        'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
    ]);

и ваш запрос почтальона ставится как

filename[]  (format type = file) = image1.jpg
filename[]  (format type = file) = image2.jpg
filename[]  (format type = file) = image3.jpg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...