首页 > 解决方案 > 无法使用 PHP 和 Laravel 存储上传的图像

问题描述

我正在学习 Laravel 并尝试创建一个网页来上传相册。我已阅读有关验证的 laravel 文档,并且正在验证每个字段。但是,单击提交后,图像不会发布到 store 方法。

路由在 web.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();

当我在填写完字段后单击表单上的提交时,我仍然收到错误“需要封面图片”。在此处输入图像描述

标签: phplaravellaravel-5

解决方案


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 文件。


推荐阅读