Изображение должно быть файлом типа: jpeg, bmp, png, jpg. в ларавеле 5.5

Я не понимаю, почему он не работает и выдает ошибку

вот моя форма

{!! Form::open(['method' => 'PUT', 'route' => ['admin.project.edit', $project->slug, 'files' => 'true']]) !!}

                      <div class="form-group{{ $errors->has('title') ? ' has-error' : '' }}">
                    {!! Form::label('title', 'Title') !!}
                    {!! Form::text('title', $project->title, ['class' => 'form-control', 'required' => 'required']) !!}
                    <small class="text-danger">{{ $errors->first('title') }}</small>
                </div>
                <div class="form-group{{ $errors->has('content') ? ' has-error' : '' }}">
                    {!! Form::label('content', 'Content') !!}
                    {!! Form::textarea('content', $project->content, ['class' => 'form-control', 'required' => 'required']) !!}
                    <small class="text-danger">{{ $errors->first('content') }}</small>
                </div>

                @if($project->progress == 1)
                <div class="radio{{ $errors->has('progress') ? ' has-error' : '' }}">
                    <label for="progress">
                        {!! Form::radio('progress', '1',  null, ['id' => 'radio_id', 'checked' => 'checked']) !!} In Progress
                    </label>
                    <small class="text-danger">{{ $errors->first('progress') }}</small>
                </div>

                <div class="radio{{ $errors->has('progress') ? ' has-error' : '' }}">
                    <label for="progress">
                        {!! Form::radio('progress', '2',  null, ['id' => 'radio_id']) !!} Complete
                    </label>
                    <small class="text-danger">{{ $errors->first('progress') }}</small>
                </div>
                @else
                <div class="radio{{ $errors->has('progress') ? ' has-error' : '' }}">
                    <label for="progress">
                        {!! Form::radio('progress', '1',  null, ['id' => 'radio_id']) !!} In Progress
                    </label>
                    <small class="text-danger">{{ $errors->first('progress') }}</small>
                </div>

                <div class="radio{{ $errors->has('progress') ? ' has-error' : '' }}">
                    <label for="progress">
                        {!! Form::radio('progress', '2',  null, ['id' => 'radio_id', 'checked' => 'checked']) !!} Complete
                    </label>
                    <small class="text-danger">{{ $errors->first('progress') }}</small>
                </div>
                @endif

                <div class="form-group{{ $errors->has('image') ? ' has-error' : '' }}">
                    {!! Form::label('image', 'Select Image of page') !!}
                    {!! Form::file('image') !!}
                    <p class="help-block">for better view select 1920x1080 size of image</p>
                    <small class="text-danger">{{ $errors->first('image') }}</small>
                </div>
                    </div>
                    <div class="modal-footer">
                      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                      {!! Form::submit("Edit", ['class' => 'btn btn-warning pull-right']) !!}

                  {!! Form::close() !!}

И моя админка

public function projectedit($id, Request $request){

    $this->validate($request, [
        'title' => 'required|max:255',
        'content' => 'required|max:10000',
        'image' => 'mimes:jpeg,bmp,png,jpg',
    ]);

    $project = Project::where('slug', $id)->firstorfail();
    $project->title = $request->title;
    $project->slug = str_slug($project->title, '-');
    $project->content = $request->content;
    $project->progress = $request->progress;
    if($request->hasFile('image')) {
        $file = Input::file('image');
        //getting timestamp
        $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
        $name = $timestamp. '-' .$file->getClientOriginalName();
        $file->move(public_path().'/images/project/', $name);
        $project->image = $name;
        $thumb = Image::make(public_path().'/images/project/' . $name)->resize(1200,500)->save(public_path().'/images/project/thumb/' . $name, 60);
    }
    $project->save();
    return Redirect::back()->with('status', 'Project Edit Success');

}

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


person Sid Heart    schedule 23.11.2017    source источник
comment
Изменить 'files' => false на 'files' -> true   -  person SteD    schedule 23.11.2017
comment
Вы делаете это: 'files' => 'false' это ограничивает изображение при загрузке! Сделайте: 'files' => 'true, чтобы загрузить файл!   -  person Hiren Gohel    schedule 23.11.2017
comment
Пожалуйста, прочитайте При каких обстоятельствах я могу добавить «срочно» или другие подобные фразы к моему вопросу, чтобы получить более быстрые ответы? - Подводя итог, можно сказать, что это не идеальный способ обращения к волонтерам и, вероятно, контрпродуктивно для получения ответов. Пожалуйста, воздержитесь от добавления этого к своим вопросам.   -  person halfer    schedule 23.11.2017


Ответы (5)


Вы должны установить

'files' => 'false'

to

'files' => 'true'

в строке 1 вашей формы

person Insax    schedule 23.11.2017
comment
вы также правы. Посмотрите на маршрут в массиве, и на маршруте не должно быть файлов, поэтому я просто меняю «маршрут» => ['admin.project.edit', $project-> slug, 'files' => «true»] на 'route' =› ['admin.project.edit', $project-›slug], 'files' =› 'true' исправьте это в своем коде, я проверю на вас - person Sid Heart; 23.11.2017

Измените следующую строку:

{!! Form::open(['method' => 'PUT', 'route' => ['admin.project.edit', $project->slug, 'files' => 'false']]) !!}

к этому:

{!! Form::open(['method' => 'PUT', 'route' => ['admin.project.edit', $project->slug], 'files' => 'true']) !!}

И то, как вы загружаете изображение, довольно грязное, оно выглядит в контроллере, как насчет использования Laravel Filesystem для что?

Измените следующую строку в config/filesytems.php:

'local' => [
     'driver' => 'local',
     'root' => storage_path('app'),
],

к этому:

'local' => [
     'driver' => 'local',
     'root' => public_path(),
],

Затем в контроллере вы можете сделать это:

public function projectedit($id, Request $request){
    $this->validate($request, [
        'title' => 'required|max:255',
        'content' => 'required|max:10000',
        'image' => 'mimes:jpeg,bmp,png,jpg',
    ]);

    $project = Project::where('slug', $id)->firstorfail();
    $project->title = $request->title;
    $project->slug = str_slug($project->title, '-');
    $project->content = $request->content;
    $project->progress = $request->progress;
    if($request->hasFile('image')) {
        $project->image = $request->file('image')->store('images/project');
    }
    $project->save();
    return Redirect::back()->with('status', 'Project Edit Success');
}

Чистый да? :)

person Yubaraj Shrestha    schedule 23.11.2017
comment
я нашел ответ Посмотрите на маршрут в массиве, и маршрут не должен иметь файлов, поэтому я просто меняю 'route' => ['admin.project.edit', $project-> slug, 'files' => 'true'] на 'route' =› ['admin.project.edit', $project-›slug], 'files' =› 'true' исправьте это в своем коде, я проверю на вас - person Sid Heart; 23.11.2017
comment
Похоже, я набрал там шрифт, разобрался :) Спасибо - person Yubaraj Shrestha; 25.12.2017

В коде создания формы вы устанавливаете:

['files' => 'false']

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

enctype= multipart/form-data laravel
person kofoworola    schedule 23.11.2017

установите для 'files' => 'false' значение 'files' => 'true' в вашей форме.

и проверьте свой файл php.ini на наличие file_upload=on;

person Viraj Shah    schedule 23.11.2017

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

{!! Form::open(['method' => 'PUT', 'route' => ['admin.project.edit', $project->slug, 'files' => 'false']]) !!}

To

{!! Form::open(['method' => 'POST', 'route' => ['admin.project.edit', $project->slug, 'files' => 'true']]) !!}
person AddWeb Solution Pvt Ltd    schedule 23.11.2017