1,view
<a href="javascript:void(0);" class="addfile"> <div class="rfidin_box clearfix"> <img src="{{asset('images/lodingin_icon.png')}}" alt=""> <span style=" color: orange">导入</span> <form action="" method="post" enctype="multipart/form-data" id="formlist"> {{csrf_field()}} <input type="file" data-id="{{$goods->id}}" value="" name="excel" οnchange="fileupload()" multiple="multiple"> </form> </div> </a>
2,ajax(注意jQuery,jQuery-form.js,layer插件的引入还有bootstrap相关的css,js的引入)
function fileupload(){
$('#formlist').ajaxSubmit({
// ['goods_id'=>$good->id]
url: "{{url('admin/commodity/rfidimport')}}",//重点
dataType:'json',
type:'post',
data:$('#formlist').fieldSerialize(),
// data:$('#formlist').serialize(),
success:function(res) {
if (res.status == 0) {
layer.msg(res.msg);
} else {
layer.msg(res.msg, {icon: 1}, function () {
location.reload();//重点
}); } }, error:function(xhr, type){ layer.msg('请检查导入的excel表格式是否正确'); } }); }
3,laravel的路由
Route::post('/rfidimport','CommodityController@rfidimport');
//重点
4,控制器的写法:
public function rfidimport(Request $request) { // dd($request->all()); $data = Excel::load($request->file('excel'), function($reader) {})->get()->toArray(); //商品分类不能为空 // dd($data); $sh_array = array(); foreach ($data[0] as $ite){ reset($ite); $first=current($ite); array_push($sh_array, $first); } // dd($sh_array); foreach($sh_array as $v) { if (empty($v)) { return response()->json(['status' => 0, 'msg' => '商品序号不能为空']); } } // dd($data); $ch_array = array(); foreach ($data[0] as $item){ reset($item); current($item); $first=next($item); array_push($ch_array,$first); } //判断导入的数据是非有重复值 if (count($ch_array) != count(array_unique($ch_array))) { return response()->json(['status'=>0,'msg'=>'该导入数组有重复值']); } //导入的数据与数据库的数据是否重复 $warehouses= GoodsNexus::where('rfid','=',$ch_array[0])->first(); if($warehouses){ return response()->json(['status'=>0,'msg'=>'导入失败,rfid码重复']); } foreach ($data as $value) {//循环sheet if(!empty($value)){ $titleArr = array_keys($value[0]); //判断表头的数据是非正确,防止其他文件的导入 if($titleArr[0] != '商品序号'){ return response()->json(['status'=>0,'msg'=>'导入失败']); } if($titleArr[1] != 'rfid码'){ return response()->json(['status'=>0,'msg'=>'导入失败']); } } //数据通过models传到数据库中 foreach($value as $rfidData){ GoodsNexus::create([ 'goods_id'=>$rfidData['商品序号'], 'rfid' => $rfidData['rfid码'], ]); } } return ['status'=>1,'msg'=>'导入成功']; }