【发布时间】:2018-10-19 00:57:37
【问题描述】:
我是 ReactJS 的新手,我的后端是 laravel,我在将多个文件插入数据库时遇到问题,但是如果我只使用单个上传(将一个文件插入数据库,它对我有用。)。
问题:关于在数据库中插入多个文件。
目标:将多个文件插入数据库
这里有
表格数据:
const formData = new FormData();
formData.append('myFile', this.state.image);
回复:
axios.post('/api/save_gallery_album_image', formData).then(response => {
console.log(response);
}).catch(error => (error.response));
OnChange:
handleChangeImage(e){
this.setState({
image:e.target.files[0]
})
// console.log(e.target.files);
}
JSX:
<label>Image</label>
<div className="custom-file">
<input type="file"
name="image"
multiple
onChange={this.handleChangeImage}
className="custom-file-input form-control"
accept="image/x-png,image/gif,image/jpeg"
id="file_selected"/>
<label className="custom-file-label" htmlFor="validatedCustomFile">Choose file...</label>
</div>
服务器端控制器:
public function save_gallery_album_image(Request $request)
{
$multiple_gallery_file_upload = $request->file('myFile');
$titleValue = $request->get('titleValue');
$pageValue = $request->get('pageValue');
$now = new DateTime();
if($request->hasFile('myFile'))
{
foreach($multiple_gallery_file_upload as $myfiles)
{
$uniqueid=uniqid();
$original_name=$request->file('myFile')->getClientOriginalName();
$size=$request->file('myFile')->getSize();
$extension=$request->file('myFile')->getClientOriginalExtension();
$name=$uniqueid.'.'.$extension;
$path=$request->file('myFile')->storeAs('public',$name);
DB::insert('INSERT INTO album_category (cid,image,created_at) VALUES (?,?,?) ',[
$titleValue,
$name,
$now
]);
}
return response()->json('Input Saved');
}
}
【问题讨论】:
-
<input>元素名称属性需要这样格式化:<input name="images[]" multiple/>然后你可以在laravel中访问它:$images = $request->file('images'); if($request->has('images'){//loop throughforeach($images as $image){$image->} -
@user3647971 我使用表单数据
-
为什么有人会拒绝我的问题?他们需要改进吗?
-
你可以参考这个问题来解决你的问题:stackoverflow.com/questions/55596514/…>
标签: javascript reactjs laravel