我正在尝试在项目上上传多个图像,但是它没有保存到数据库中
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>
如何将文件保存到数据库中,因为它根本不保存到数据库中?有人可以帮我解决这个问题吗?
答案 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数组中获得了所有图像路径。