laravel - 更改图像名称并保存到 DB Laravel
问题描述
嗨,我无法在 Laravel 项目中将图像名称存储到数据库中。如何解决这个问题?
这是控制器的代码
class TarifController extends Controller
{
public function store(Request $request)
{
$request->validate([
'title_uz' => 'required',
'desc_uz' => 'required',
'full_desc_uz' => 'required',
'company_id' => 'required',
'order' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,svg|max:2048',
]);
$image1 = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $image1);
Tarif::create($request->all());
return redirect()->route('tarifs.index')
->with('success','Yangi tarif muvoffaqiyatli qo`shildi.');
}
}
这是视图中的代码
<form role="form" action="{{ route('tarifs.store') }}" method="post" enctype="multipart/form-data">
@csrf
<div> .. another fields .. </div>
<div class="col-5">
<label for="image">Surat</label>
<input type="file" class="form-control" name="image" id="image" required>
</div>
<div> .. another fields .. </div>
<div class="card-footer">
<a class="btn btn-info" href="{{ route('tarifs.index') }}">Qaytish</a>
<button type="submit" class="btn btn-success">Saqlash</button>
</div>
</form>
它将图像保存到 public/images 文件夹,但没有将文件名或路径保存到 DB。字段名称是数据库上的“图像”。
解决方案
如果您需要将新值合并到请求对象中,则以下代码可以解决问题:
$request->merge(['image' => 'avatar.png']);
或者,您可以像这样更改代码:
$image1 = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $image1);
$input = $request->all();
$input['image'] = $image1;
Tarif::create($input);
推荐阅读
- git - 不相关 repos 的 Git 合并是否需要特定版本的 Git?
- python - 在 Colab 中使用网络摄像头进行 TensorFlow 对象检测
- java - 在 Spring Boot 中,如何将控制器模型变量传递给 Thymeleaf th:src?
- java - 使用泛型将 xml 解组为 Java 对象时出现 UnmarshalException
- javascript - 为什么 post 请求不发送 cookie?
- java - 如何像泛型类一样返回扩展类?
- c# - 如果另一个 API 调用当前在 ASP.NET Core 中运行,则拒绝 API 调用
- javascript - 无法通过选择 api 在空格后选择刚刚写的单词
- or-tools - 如何获取ortools返还成本?
- performance - 具有最佳界限的大型 MILP = B&B 每个节点的目标值,为什么求解器不接受该解决方案?