方法一:
<el-table-column label="操作"> <template slot-scope="scope"> <el-button icon="el-icon-circle-plus-outline" type="primary" v-on:click="addOp(scope.row)"></el-button> <el-button type="primary" v-on:click="importQuato(scope.row)">导入额度批次表</el-button> </template> </el-table-column> <el-button type="primary" v-on:click="importQuato(scope.row)">导入额度批次表</el-button>//导入按钮 scope.row可以获取每一列的id <el-dialog :title="title" :visible.sync="dialogVisible"> <el-upload class="upload-demo" drag class=‘ensure ensureButt‘ action="123" //这里可以随意不影响 :before-upload="beforeAvatarUpload" //上传前文件校验 multiple> <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__tip" slot="tip">只能上传xls、xlsx文件,且不超过10MB</div> </el-upload> <div slot="footer" class="dialog-footer"> <!--<el-button v-on:click="dialogVisible = false">取 消</el-button>--> <el-button type="primary" v-on:click="dialogVisible = false">确 定</el-button> </div> </el-dialog>
// 上传前对文件的大小的判断 beforeAvatarUpload (file) { var fileName=new Array() fileName =file.name.split(‘.‘); const extension = fileName[fileName.length-1] === ‘xls‘ const extension2 = fileName[fileName.length-1]=== ‘xlsx‘ const isLt2M = file.size / 1024 / 1024 < 10 if (!extension && !extension2) { this.$message({ message: ‘上传模板只能是xls、xlsx格式!‘, type: ‘warning‘ }); // console.log(‘上传模板只能是xls、xlsx格式!‘) } if (!isLt2M) { this.$message({ message: ‘上传模板大小不能超过 10MB!‘, type: ‘warning‘ }); // console.log(‘上传模板大小不能超过 10MB!‘) } if (extension || extension2 && isLt2M == true) { console.log(file) let fd = new FormData() fd.append(‘invoiceTypeId‘, this.invoice_type_id)//随文件上传的其他参数 fd.append(‘epid‘, this.epid) fd.append(‘file‘, file) // console.log(fd) this.newImport(fd).then(function (res) {//校验完成后提交 console.log(res) }, function () { console.log(‘failed‘); }); return true } return extension || extension2 && isLt2M }, //提示信息 open: function (msg, code) { if (code == ‘000‘) { this.$alert(msg, ‘提示‘, { confirmButtonText: ‘确定‘, type: ‘success‘, callback: action => { this.dialogFormVisible = false; location.reload(); } }); } else { this.$alert(msg, ‘提示‘, { confirmButtonText: ‘确定‘, type: ‘error‘, callback: action => { this.dialogFormVisible = false; location.reload(); } }); } }, newImport (data) { this.$http.post(‘../enterPriseQuota/importEnterPriseQuota‘, data).then(function (res) {//成功后回调 let code = res.data.returncode;//返回json结果 let msg = res.data.msg; this.open(msg, code); console.log(‘success‘); }, function () { console.log(‘failed‘); }); }, }
@RequestMapping("/importEnterPriseQuota") @ResponseBody public Map importEnterPriseQuota(@RequestParam(value = "invoiceTypeId") String invoiceTypeId, @RequestParam(value = "epid") String epid, @RequestParam("file") MultipartFile proFile, HttpServletRequest request) { String fileDir = request.getSession().getServletContext().getRealPath("/tmp"); File dir = new File(fileDir); Map resMap = null; File file = null; try { file = new File(fileDir, proFile.getOriginalFilename()); if (!dir.exists()) { dir.mkdir(); } if (!file.exists()) { file.createNewFile(); } proFile.transferTo(file); Date a = new Date(); resMap = enterPriseQuotaService.importEnterPriseQuato(invoiceTypeId,file,epid); Date b = new Date(); log.info("************all_time*************************" + (b.getTime() - a.getTime())); return resMap; } catch (IOException e) { e.printStackTrace(); } finally { if (file != null && file.exists()) { file.delete(); } } resMap.put("returncode", "999"); resMap.put("msg", "程序异常,请联系管理员"); return resMap; }
方法二:
<el-dialog :title="tagName" :visible.sync="dialogVisible"> <el-upload class="upload-demo" drag class=‘ensure ensureButt‘ :action="importFileUrl"//在初始时指定url地址即可 :on-error="uploadError" :on-success="uploadSuccess" :before-upload="beforeAvatarUpload" multiple> <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__tip" slot="tip">只能上传xls、xlsx文件,且不超过10MB</div> </el-upload> <div slot="footer" class="dialog-footer"> <!--<el-button v-on:click="dialogVisible = false">取 消</el-button>--> <el-button type="primary" v-on:click="dialogVisible = false">确 定</el-button> </div> </el-dialog>
//有时候 :on-success,:on-error 这个函数会无法调用,之前看另一个帖子是用的:onError="uploadError" :onSuccess="uploadSuccess"
http://blog.csdn.net/qq_39685062/article/details/77036582
// 上传成功后的回调 uploadSuccess (response) { let code = response.returncode; let msg = response.msg; this.open(msg, code); }, // 上传错误 uploadError (response) { this.open("500", "文件导入异常!"); },
@RequestMapping("inEmployee") @ResponseBody public Map inEmployee(HttpServletRequest servletRequest) { MultipartHttpServletRequest request = (MultipartHttpServletRequest) servletRequest; Iterator<String> itr = request.getFileNames(); MultipartFile proFile = null; while (itr.hasNext()) { String str = itr.next(); proFile = request.getFile(str); } String fileDir = request.getSession().getServletContext().getRealPath("/tmp"); File dir = new File(fileDir); Map resMap = null; File file = null; try { file = new File(fileDir, proFile.getOriginalFilename()); if (!dir.exists()) { dir.mkdir(); } if (!file.exists()) { file.createNewFile(); } proFile.transferTo(file); Date a = new Date(); resMap = employeeService.insEm(file,fileDir); Date b = new Date(); log.info("************all_time*************************" + (b.getTime() - a.getTime())); return resMap; } catch (IOException e) { e.printStackTrace(); } finally { if (file != null && file.exists()) { file.delete(); } } resMap.put("returncode", "999"); resMap.put("msg", "程序异常,请联系管理员"); return resMap; }