多图像上传系统

时间:2019-10-13 17:20:21

标签: php mysql laravel

我正在尝试在项目上上传多个图像,但是它没有保存到数据库中

public function store(Request $request)
{
    //validate
    $this->validate($request, [
        'subject'=>'required|min:10',
        'tags' => 'required',
        'body' => 'required|min:20',
        'filename' => 'sometimes',
        'filename.*' => 'file|image|mimes:jpeg,png,jpg,gif,svg|max:5000'
    ]);

    //store
    $news=auth()->user()->news()->create($request->all());
    $news->tags()->attach($request->tags);
    $this->storeImage($news);

    //redirect
    return redirect()->route('news.index');
}
private function storeImage($news)
{
    if (request()->has('image')) {
        foreach (request()->file('filename') as $file) {
            $news->update([
                'filename' => request()->filename->store('uploads', 'public'),
            ]);
        }
    }
}

上传HTML:

<div class="form-group">
  <label for="image"><b>Select Image To Add</b></label>
  <input type="file" name="filename[]">
</div>

如何将文件保存到数据库中,因为它根本不保存到数据库中?有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

将图像保存在数据库中不是一个好主意。将文件保留在服务器上的公用文件夹中,并将文件路径仅保存在数据库中。

像这样更新您的表单

<form class="form-horizontal" enctype="multipart/form-data" method="post" action="/store-image">

在输入中添加多个

<div class="form-group">
    <label for="image"><b>Select Image To Add</b></label>
    <input type="file" name="filename[]" multiple >
</div>

像这样更新您的storeImageFunction

public function storeImage(request $request) {
 $input=$request->all();
 $images=array();
 if($files=$request->file('images')){
   foreach($files as $file){
     $name=$file->getClientOriginalName();
     $file->move('image',$name);
     $images[]=$name;
  }
 }
}

现在,您已经在 images数组中获得了所有图像路径。