php - 无法使用 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();
当我在填写完字段后单击表单上的提交时,我仍然收到错误“需要封面图片”。在此处输入图像描述
解决方案
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 文件。
推荐阅读
- raspberry-pi3 - Raspberry Pi 无法在某些 HDMI 显示器上工作
- mysql - MySQL - how to show some field in select query that accept my condition
- python - 通过命令更改复合审核日志
- java - 如何解决 Selenium 中的 org.openqa.selenium.NoSuchElementException?
- python - 为什么我的 Django 表单无效?
- laravel - Validator::validateNumber 不存在
- arrays - 调整向量大小 Julia
- java - 在 applicationContext.xml 中添加 bean 'sessionFactory' 后出错
- android - 如何创建服务 FirebaseMessagingService 在后台始终处于活动状态
- python - 使用 DateTimeIndex 计算数据框中字符串的出现次数