Как исправить 'Файл не удалось загрузить.'ошибка при использовании какой-либо проверки для загрузки изображения - Laravel 5.7 - PullRequest
0 голосов
/ 21 апреля 2019

Я использую Laravel 5.7

Я пытаюсь загрузить файл изображения и проверяю его загрузку, используя встроенную проверку laravel. Он продолжает отвечать 'The file failed to upload.'

Я использую AJAX для загрузки этих данных. Моя форма имеет enctype="multipart/form-data" набор.

Я уже решил включить токен CSRF в запрос AJAX.

Я уже исправил проблему php.ini max_file_size, и файлы, с которыми я тестирую, намного меньше 10 МБ.

Если я загружаю текстовый файл (в качестве примера), и с проверкой, установленной на required|image|max:10000, это корректно предотвратит загрузку файла и ответит 'File must be an image.'

Если я отключу проверку all , файл будет загружен просто отлично.

Я не могу думать ни о чем другом, я могу поступать неправильно. Пожалуйста, помогите, так как мой проект сейчас остановлен.

Форма HTML:

<form method="post" class="dropzone" action="{{ route('images') }}" enctype="multipart/form-data"
                  data-nopants-load="dropzone{'transformImage':true,'acceptedFiles-1':'image/jpg','previewsContainer':'#dropzone-previews'}">
                @method('post')
                @csrf
                <div class="dz-border">
                    <div class="background"></div>
                    <div class="border"></div>
                </div>
                <div class="dz-message margins-auto _font-size-large"><span>Drop Images here or <span class="_underline">Click</span> to Upload.</span></div>
                <div class="fallback flex-col">
                    <div class="self-center margin-bottom">
                        <input name="file" type="file" class="form-input" multiple />
                    </div>
                    <button type="submit" class="button -call">Upload</button>
                </div>
            </form>

UploadImageFormRequest.php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

use Illuminate\Support\Facades\Auth;

class UploadImageFormRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return Auth::check();//user()->can('create', Organization::class);
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return ['file' => 'required|image|mimes:jpeg,bmp,png'];
    }
}

UploadImagesController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests\UploadImageFormRequest;

class UploadImagesController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:user,admin');
    }

    public function store(UploadImageFormRequest $request){
    //Wont get here...
    }
}

1 Ответ

0 голосов
/ 22 апреля 2019

я думаю, что множественный атрибут превращает его в массив, попробуйте удалить множественный атрибут

<input name="file" type="file" class="form-input" multiple />

к этому

<input name="file" type="file" class="form-input"/>

и если вы хотите иметь несколько изображений, вы должны сделать это

<input name="file[]" type="file" class="form-input" multiple />

и ваша проверка, как это

        return [
      'file' => 'array',
      'file.*' => 'image|mimes:jpeg,bmp,png'
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...