【问题标题】:Change image name and save to DB Laravel更改图像名称并保存到 DB Laravel
【发布时间】:2021-02-21 02:19:30
【问题描述】:

您好,我无法在 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。字段名称是数据库上的“图像”。

【问题讨论】:

    标签: laravel file-upload


    【解决方案1】:

    如果您需要将新值合并到请求对象中,下面的代码就可以解决问题:

    $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);
    

    【讨论】:

    • 我进行了与您类似的更改,但它保存的数据类似于“W:\userdata\temp\php69E2.tmp”。但是当我捕获请求时,它会返回 ["image" => "1604906402.jpeg"]。
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    相关资源
    最近更新 更多