Задать вопрос
@smoove1117

Проблема с обработкой запроса formData?

Пытаюсь присылать файл через postman, но выдает ошибку. Пытался убрать свой обработчик, но выдавало другую ошибку. Видимо он не видит этот файл.

Код контроллера
<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreFilesRequest;
use App\Http\Requests\UpdateFilesRequest;
use App\Models\Files;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;

class FilesController extends Controller
{
    public function store(StoreFilesRequest $request)
    {
        $user = auth()->user(); // Получаем текущего пользователя

        $allowedFileTypes = ['doc', 'pdf', 'docx', 'zip', 'jpeg', 'jpg', 'png'];
        $allowedFileExtensions = array_map('strtolower', $allowedFileTypes);
        $file = $request->file('file'); // Получаем файл из formData

        if ($file && in_array(strtolower($file->getClientOriginalExtension()), $allowedFileExtensions)) {
            if ($file->getSize() <= 2097152) { // 2 MB
                $fileId = Str::random(10);

                $originalName = $file->getClientOriginalName();
                $fileName = $originalName;
                $extension = $file->getClientOriginalExtension();
                $i = 1;
                while (Storage::disk('public')->exists("C:\Users\alecs\OneDrive\Рабочий стол\l/{$user->id}/{$fileName}.{$extension}")) {
                    $fileName = $originalName . " ($i)";
                    $i++;
                }

                $path = $file->storeAs("C:\Users\alecs\OneDrive\Рабочий стол\l/{$user->id}", "$fileName.$extension", 'public');

                $fileModel = new Files; // Files  модель файла
                $fileModel->file_id = $fileId;
                $fileModel->user_id = $user->id;
                $fileModel->original_name = $originalName;
                $fileModel->file_name = $fileName;
                $fileModel->extension = $extension;
                $fileModel->path = $path;
                $fileModel->save();

                return response()->json([
                    'success' => true,
                    'file_id' => $fileId,
                    'file_name' => $fileName,
                    'file_path' => Storage::disk('public')->url($path)
                ]);
            } else {
                return response()->json([
                    'success' => false,
                    'message' => 'Размер файла превышает допустимый предел.'
                ], 422);
            }
        } else {
            return response()->json([
                'success' => false,
                'message' => 'Неверный тип файла. Допустимые типы: ' . implode(', ', $allowedFileTypes)
            ], 422);
        }
    }
}

Первая ошибка
66632f9d75942781544992.png
Вторая ошибка
66632fe4a0b86422541093.png
  • Вопрос задан
  • 63 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@EgZh
Проверяй загружаемый файл в StoreFilesRequest средствами валидации Laravel, как размер так и тип/расширение, думаю часть вопросов отпадут:
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы