1、html部分
<form enctype="multipart/form-data"> <label>请选择文件</label> <input id="file" class="file" type="file"> </form>
2、js部分
$("#file").fileinput({ uploadUrl: Config.Java_Manage_Path+'black/uploadBlack', allowedFileExtensions: ['xls', 'xlsx'], dropZoneEnabled: false, browseLabel:"选择", showRemove: false, showUpload: false, uploadLabel: "提交", showCancel: false, maxFileSize: 6000, msgSizeTooLarge: '"{name}" ({size} KB) 不得超过 {maxSize} KB. 请重新选择文件', fileActionSettings: { showZoom: false,//不显示预览按钮 uploadTitle: "上传", removeTitle: "删除" }, progressUploadThreshold: "导入中,请稍后...", msgInvalidFileExtension: '仅支持 "{extensions}" 类型的文件.' }); //点击上传后隐藏关闭按钮 $('#file').on('filepreupload', function(event, data, previewId, index) { // var form = data.form, files = data.files, extra = data.extra, // response = data.response, reader = data.reader; // console.log('File pre upload triggered'); $("#close").hide(); }); //上传完毕显示关闭按钮 $('#file').on('fileuploaded', function(event, data, previewId, index) { /*var form = data.form, files = data.files, extra = data.extra, response = data.response, reader = data.reader; console.log('File uploaded triggered');*/ var response = data.response; if(response.result == "ok"){ $.messager.popup("导入成功"); }else{ $.messager.popup("服务器可能出错了,请稍候再试"); } $("#close").show(); $("#upload").modal("hide"); doSearch(); });
3、controller部分
//创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(req.getSession().getServletContext()); //判断 request 是否有文件上传,即多部分请求 if(multipartResolver.isMultipart(req)){ //转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) req; // 取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); if(iter.hasNext()) { // 取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); String fileName = file.getOriginalFilename(); if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) { this.response(req, res, false); } String newName = DateUtil.dateToStringT(new Date()) + fileName; File targetFile = new File(upload_path, newName); // 保存 // try { // file.transferTo(targetFile); // } catch (Exception e) { // e.printStackTrace(); // this.response(req, res, false,ResultCode.getMessage(ResultCode.EXCEPTION)); // } FileOutputStream os = null; InputStream in = null; // 保存 try { os = new FileOutputStream(upload_path+"/"+newName); //拿到上传文件的输入流 in = file.getInputStream(); //以写字节的方式写文件 int b = 0; while((b=in.read()) != -1){ os.write(b); } } catch (Exception e) { e.printStackTrace(); this.response(req, res,false, ResultCode.getMessage(ResultCode.EXCEPTION)); }finally{ os.flush(); os.close(); in.close(); } // 读取excel ExcelImportUtil excelUtil = new ExcelImportUtil(); excelUtil.setExcelPath(targetFile.getPath()); excelUtil.setStartReadPos(1); List<Row> rowList = excelUtil.readExcel(); if (!(rowList != null && rowList.size() > 0)) { this.response(req, res, false, ResultCode.getMessage(ResultCode.FILE_READ_ERROR)); }
//读取文件内容添加到数据库 Map<String, Object> map = blacklistservice.addBlackList( excelUtil, rowList); if (map != null) { this.response(req, res, JsonUtil.toJson(map)); } else { this.response(req, res, false, ResultCode.getMessage(ResultCode.EXCEPTION)); } } } }