$ request-> hasFile () возвращает false при загрузке - PullRequest
0 голосов
/ 19 апреля 2019

Я не могу заставить свое приложение загрузить файл при отправке запроса в моем приложении Laravel 5.8. Независимо от того, какой тип файла я загружаю, hasFile() всегда возвращает false.

Форма

<form action="{{ route('items.store') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <div class="form-group py-50">
        <input type="file" name="featured_img" value="featured_img" id="featured_img">
    </div>                    

    <div class="form-group">    
        <input type="submit" class="btn btn-primary" value="Upload Image" name="submit">
    </div>                                    
</form>

Контроллер

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //Check if image has been uploaded
    if($request->hasFile('featured_img')){
        return "True!"; 
    } else {
        return "False!";
    }  
}

dd () Вывод

array:7 [▼
  "_token" => "sREFSO8bs0rWil05AESVrwEl37XtKOJAF2nCkTNR"
  "status" => "published"
  "featured_img" => "example.jpg"
  "submit" => "Upload Image"
]
  • enctype="multipart/form-data" был включен в мою форму.
  • Я протестировал несколько файлов размером около 50-80 КБ
  • Я запускаю другое приложение Laravel в той же среде без каких-либо проблем. Я также протестировал загрузку тех же изображений в это приложение без каких-либо проблем. Это наводит меня на мысль, что это не имеет ничего общего с неправильной настройкой php.ini
  • dd($request->all()); возвращает имя строки для "featured_img" вместо файлового объекта

UPDATE

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

1 Ответ

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

Я тестировал в одной из моих инсталляций с в web.php

use Illuminate\Http\Request;
Route::get('test', function(){
    return view('test');
});
Route::post('test', function(Request $request){
    dd($request->hasFile('test'));
})->name('test');

в test.blade.php

<form action="{{ route('test') }}" method="POST" enctype="multipart/form-data">
    @csrf
   <div class="form-group py-50">
     <input type="file" name="test" id="featured_img">
   </div>                    

    <div class="form-group">    
      <input type="submit" class="btn btn-primary" value="Upload Image" name="submit">
    </div>

  </form>

$request->hasFile('test') возвращает true, проверьте с этим кодомв вашем контроллере или файле маршрута и сообщите мне, если у вас возникли проблемы.

Также

Вы должны использовать @stack, чтобы добавить скрипт в свой блейд, а не @ section

Обновление

В соответствии с вашим обновленным кодом страницы просмотра, у вас есть две формы в вашем представлении, отправляющих по одному и тому же маршруту, что первая форма не закрыта, а втораяоткрыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...