【问题标题】:image isn't saving into db in laravel图像没有保存到 laravel 中的数据库中
【发布时间】:2019-11-29 19:25:04
【问题描述】:

您好我试图将数据保存到数据库数据保存中,但图像未保存如何将其保存在数据库中:

控制器:

   public function store(Request $request)
{
    // dd($request->all());
    $request->validate([
        'category_name'         => 'required',
        'category_description'  => 'required',
        'category_slug'         => 'required',
        'category_image'        => 'required|image',
    ]);

    DB::table('categories')->insert([
        'category_name'          => $request->category_name,
        'category_description'   => $request->category_description,
        'category_slug'          => $request->category_slug,
        'category_image'         => $request->category_image,
    ]);

    $path = $request->file('category_image');
    $path->getClientOriginalName();
    $path->move(public_path('images/backend_images/category_images');

    return back();
}

【问题讨论】:

  • 看起来您正在尝试将整个文件存储在数据库中,然后还存储在文件系统中。理想情况下,您只需将路径存储到数据库中的文件。
  • 只有文件名存储到数据库中,我的代码错误,所以我在这里发布它来解决它,,,现在它说:语法错误,意外';',期待','或' )' 在这一行:: $path->move(public_path('images/backend_images/category_images'); 你能告诉我如何解决它
  • ; 之前缺少另一个)
  • 现在整个数据没有保存,也没有给出任何错误

标签: laravel eloquent laravel-5.8


【解决方案1】:

嗯...在您的代码部分中,没有var.save(); 那么如果没有给定指令,eloquent 将如何存储任何数据?

每个例子做这样的事情:

$userImage = new UserImage;
$UserImage->save();

【讨论】:

    【解决方案2】:
    public function store(Request $request)
    {
        // dd($request->all());
        $request->validate([
            'category_name'         => 'required',
            'category_description'  => 'required',
            'category_slug'         => 'required',
            'category_image'        => 'required|image',
        ]);
    
        $path = $request->file('category_image');
        $nameImage = $path->getClientOriginalName();
        $path->move(base_path('public/images/backend_images/category_images'), $nameImage);
    
        DB::table('categories')->insert([
            'category_name'          => $request->category_name,
            'category_description'   => $request->category_description,
            'category_slug'          => $request->category_slug,
            'category_image'         => $nameImage,
        ]);
    
    
        return redirect()->back();
    }
    

    我的项目中的代码及其工作!

        if ($request->hasFile('image')) {
            $file = $request->file('image'); 
            $filename     = date('mdYHis') .str_random(5).'.'.$file->extension();
            $request->image->move(base_path('public/images/rooms'), $filename);
            $request->merge(array('image' => $filename));;
        } 
    

    【讨论】:

    • 您在$nameImage) 之后缺少;,他们正在保存到public_path 而不是base_path
    • @matticustard 我编辑了我使用 base_path 并将其保存在公共文件夹中!
    • 现在整个数据没有保存,也没有给出任何错误
    • 不,base_path('images/ 不是公用文件夹。那将是base_path('public/images/
    • 另外,您只存储文件名,而不是路径。
    【解决方案3】:

    我认为这会有所帮助。但您可以浏览更多答案。

    保存到公共目录

    $path = 'images/backend_images/category_images';
    $file = $request->file('category_image');
    $filename = $file->getClientOriginalName();
    $file->move(public_path($path), $filename);
    

    然后,保存到数据库

    DB::table('categories')->insert([
        'category_name'          => $request->category_name,
        'category_description'   => $request->category_description,
        'category_slug'          => $request->category_slug,
        'category_image'         => $filename
    ]);
    

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2019-04-21
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      相关资源
      最近更新 更多