vue的文件上傳組件 upload ,擁有支持多種格式文件上傳,單文件多文件等都支持,許多項目如今都少不了文件上傳功能,可是vue 的upload組件若是直接引用,確定也有一些不方便之處,有的時候須要傳參數,須要手動觸發上傳方法,而不是選擇了文件就上傳,因此結合我項目實例,寫一vue 自定義文件上傳的實現,包括前端和後臺的處理以及參數的接收。前端
1、先認識一下vue 的upload組件,官網連接 http://element-cn.eleme.io/#/zh-CN/component/upload,這裏很少作解釋,你們本身看vue
2、使用json
這個組件有多種樣式,我在這裏只展現一種,如圖所示api
代碼:app
@PostMapping("/upFile")
public Object upLoadFile(@RequestParam("file") MultipartFile file,@RequestParam("params") String params,
HttpServletResponse response,HttpServletRequest request){
Workbook workbook=null;
try{
if(params!=null){
JSONObject json=JSONObject.parseObject(params);
if(json.containsKey("currentHeaderId")){
System.out.println(json.get("currentHeaderId").toString());
}
}
workbook= fileService.uploadFile(file,request,response);
}catch (Exception e){
logger.info(e.getMessage());
}
return workbook;
}
二、service實現ide
@Overridepublic Workbook uploadFile(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException { checkFile(file); System.out.println(file); return getWorkBook(file); //接收文件}public static void checkFile(MultipartFile file) throws IOException { if(null==file){ logger.info("文件不存在"); throw new FileNotFoundException("文件不存在"); } String fileName=file.getOriginalFilename(); System.out.println(fileName.endsWith("xls")); if(!fileName.endsWith("xls")&&!fileName.endsWith("xlsx")){ logger.info("不是excel文件"); throw new IOException(fileName+"不是excel文件"); }}public static Workbook getWorkBook(MultipartFile file){ String fileName=file.getOriginalFilename(); Workbook workbook=null; try{ InputStream is=file.getInputStream(); if(fileName.endsWith("xls")){ workbook=new HSSFWorkbook(is); }else if(fileName.endsWith("xlsx")){ workbook=new XSSFWorkbook(is); } }catch (IOException e){ logger.info(e.getMessage()); } return workbook;}三、注,本次後臺代碼只針對excel文件,若是是其餘文件,也能夠進行百度,處理方法很簡單