Невозможно сохранить загруженное изображение, используя PHP и Laravel - PullRequest
0 голосов
/ 21 января 2020

Я изучаю Laravel и пытаюсь создать веб-страницу для загрузки фотоальбомов. Я прочитал документацию laravel о проверке, и каждое поле проверяется. Однако после нажатия кнопки «Отправить» изображение не публикуется в методе store.

Маршрут устанавливается в сети. php

Route::get('/albums/create', 'AlbumsController@create')->name("album-create");
Route::post('/albums/store', 'AlbumsController@store')->name("album-store");

Код формы показан ниже:

<div class="container">

  <h2> Create New Album </h2>

    <form method="post" action="{{ route('album-store') }}" enctype="multipart/form-data">
      <input type="hidden" name="_token" value="{{ csrf_token(@csrf) }}">

        <div class="form-group">
            <label for="name">Name</label>
            <input type="text" class="form-control" name="name" id="name" placeholder="Enter Name: ">
        </div>
        <div class="form-group">
            <label for="name">Description</label>
            <input type="text" class="form-control" name="description" id="description"  placeholder="Enter description">
        </div>
        <div class="form-group">
            <label for="name">Cover Image</label>
            <input type="file" class="form-control" name="cover_image" id="cover-image" placeholder="cover-image">
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
      </form>

и, наконец, мы у меня есть функция контроллера ниже:

public function store(Request $request) {
  $this->validate($request, [
    'name' => 'required',
    'description' => 'required',
    'cover-image' => 'required'
  ]);

  $filenameWithExtension = $request->file('cover-image')->getClientOriginalName();

      $filename = pathinfo($filenameWithExtension, PATHINFO_FILENAME);

      $extension = $request->file('cover-image')->getClientOriginalExtension();
// time stamping the images uplaoded
      $filenameToStore = $filename . '_' . time() . '.' . $extension;

// saving the file to the disk (can be found in 'storage/app/public/album_covers..')
      $request->file('cover-image')->storeAs('public/album_covers', $filenameToStore);

  $album = new Album();
  $album->name = $request->input('name');
  $album->description = $request->input('description');
  $album->cover_image = $filenameToStore;
  $album->save();

Когда я нажимаю кнопку отправить на форме после заполнения полей, я все равно получаю сообщение об ошибке «Обложка-изображение» требуется. введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 21 января 2020

Ваше имя поля ввода изображения обложки - cover_image, и вы берете значение и проверяете его как групповой ввод формы записи обложки, указанный ниже:

<div class="form-group"> <label for="name">Cover Image</label> <input type="file" class="form-control" name="cover-image" id="cover-image" placeholder="cover-image"> </div

1 голос
/ 21 января 2020

поле в html равно cover_image, в то время как проверка cover-image

<div class="form-group">
            <label for="cover-image">Cover Image</label>
            <input type="file" class="form-control" name="cover-image" id="cover-image" placeholder="cover-image">
        </div>

Атрибут метки for настроен на целевое поле с id = "name" , не имеет отношения к проблеме, но я подумал, что вам нужно посмотреть в файле html, это требует некоторого внимания.

...