国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

解析ajaxFileUpload 異步上傳文件簡單使用

2019-11-19 18:11:42
字體:
來源:轉載
供稿:網友

這里就簡單介紹下ajaxFileUpload,jQuery插件AjaxFileUpload可以實現ajax文件上傳。我們的項目采用的是jsp跟js分離的架構,所以代碼如下。

首先是jsp部分:

<!-- <form method="post"> -->     <input type="file" name="n_file" id="fileToUpload" value="上傳表格" />      <button id="upload1" class="btn btn-default">上傳</button> <!-- </form> --> 

這里說下 為什么把form注釋了,因為我的jsp中已經有了另外一個form 在調試過程中發現可能有沖突就把form注釋了,事實證明ajaxFileUpload 不用form表單一樣可以提交,下面就是js代碼部分:

$(function(){    //點擊打開文件選擇器    $("#upload1").on('click', function() {      //選擇文件之后執行上傳       $.ajaxFileUpload({        url:'supplyDataReportUploadExcel', //url自己寫        secureuri:false, //這個是啥沒啥用       type:'post',       fileElementId:'fileToUpload',//file標簽的id        dataType: 'json',//返回數據的類型        //data:{name:'logan'},//一同上傳的數據        success: function (data, status) {  //       alert(data); //       alert(data.msg);   //       alert(data.success);         if(data.success){           alert("upload,success!!!");           window.location.href='supplyDataReport';         }else{           alert(data.msg);           window.location.href='supplyDataReport';         }                }/*,        error: function (data, status, e) {          alert(e);        }*/      });     });   });  

本人js不好,只是會用這個js不能完全copy走,要結合項目結構的實際情況,不過大體參數干什么的注釋都寫了。一定注意type是post跟請求對應的Controller的方法的method=RequestMethod.POST 一致。注意dataType:'json'  ,一定注意json的大小寫。

ps:這里要說一下我用的data.success做的判斷跟后面的一個實體類AjaxJson有關系,注意!!!!!

對了 jsp中還需要引入 對應的js如下:

<script type="text/javascript">Core.js('./js/iface/upload');</script> <script type="text/javascript" src="libs/jquery/ajaxfileupload.js"></script> 

第一段引入的upload 就是上面js的內容,我們的引入js已經被封裝好了,所以直接寫那就行,具體結合實際情況 ,下面的要用到的jQuery插件AjaxFileUpload的js文件。

接下來是Controller方法如何相應:

@SuppressWarnings("resource") @RequestMapping(value = "/supplyDataReportUploadExcel", method = RequestMethod.POST) public @ResponseBody String supplyDataReportUploadExcel(HttpServletRequest request, HttpServletResponse response,MultipartFile n_file) throws Exception {   AjaxJson json = new AjaxJson();   ObjectMapper mapper = new ObjectMapper();   UploadFormBackVo uploadFormBackVo = new UploadFormBackVo();   //判斷是否是空的Excel 包括沒有標題   if(n_file.getSize()>0){     try{       //先判斷 文件名 是否符合規格 因為不知道怎么獲取上傳文件的路徑 后期修改       //獲取文件       //驗證文件名       String fileName = n_file.getOriginalFilename();       String fileNewName = fileName.replaceAll(".xls", "");       String eL = "[a-zA-Z]+[0-9]{4}-[0-9]{2}-[0-9]{2}";       Pattern p = Pattern.compile(eL);       Matcher m = p.matcher(fileNewName);       boolean dateFlag = m.matches();       if (!dateFlag) {         System.out.println("格式錯誤");         uploadFormBackVo.setFormName(n_file.getOriginalFilename());         uploadFormBackVo.setUploadTime(new Date());         uploadFormBackVo.setIfsuccess("上傳失敗,Excel文件名不符合規格!!!");         supplyDataReportService.insert(uploadFormBackVo);                  json.setSuccess(false);         json.setMsg("Excel,NameError!!!");         String jsonStr = mapper.writeValueAsString(json);         return jsonStr;       }       //上傳文件       UploadUtil.SaveFileFromInputStream(n_file.getInputStream(), "D:/補數據報表文件", n_file.getOriginalFilename());       InputStream is2 = new FileInputStream("D:/補數據報表文件/"+n_file.getOriginalFilename());              //讀取文件進行內容驗證       ExcelReader excelReader = new ExcelReader();              Map<Integer, SupplyDataReportBackVo> supplyDataReportBackVos = new HashMap<Integer, SupplyDataReportBackVo>();                     String jsonStr = excelReader.readExcelContent(is2,supplyDataReportBackVos,json,n_file);       //判斷 readExcelContent()解析Excel文件 是否符合規范 如果符合 修改相應數據        if(json.isSuccess()==true){          //遍歷map 用value --》SupplyDataReportBackVo 調用  updateById方法         for(SupplyDataReportBackVo supplyDataReportBackVo : supplyDataReportBackVos.values()){           supplyDataReportService.updateById(supplyDataReportBackVo);         }                  System.out.println("獲得Excel表格的內容:");         for (int i = 1; i <= supplyDataReportBackVos.size(); i++) {                      System.out.println(supplyDataReportBackVos.get(i));         }         //保存上傳記錄         uploadFormBackVo.setFormName(n_file.getOriginalFilename());         uploadFormBackVo.setUploadTime(new Date());         uploadFormBackVo.setIfsuccess("上傳成功");         supplyDataReportService.insert(uploadFormBackVo);         return jsonStr;       }       // 解析Excel 文件 中  有空值 保存這次上傳的記錄且刪除已上傳的Excel文件, 刪除已上傳的Excel文件已在 readExcelContent()中處理       uploadFormBackVo.setFormName(n_file.getOriginalFilename());       uploadFormBackVo.setUploadTime(new Date());       uploadFormBackVo.setIfsuccess("上傳失敗,Excel中有空值!!!");       supplyDataReportService.insert(uploadFormBackVo);       return jsonStr;     } catch (IOException e){       System.out.println(e.getMessage());     }   }else{     //ajax返回的數據     json.setSuccess(false);     json.setMsg("Upload File Null!!!!!");     String jsonStr = mapper.writeValueAsString(json);     return jsonStr;   }   System.out.println("ajax請求成功");   return "";    /    json.setMsg("upload,success!!!");    } 

這個方法注意幾個地方就行,其他的都是樓主本人自身的業務邏輯,第一@RequestMapping中請求的方式為POST,第二傳入的參數有個MultipartFile  n_file,這個n_file要跟jsp中的<input>標簽中name屬性對應。第三要注意返回值Sting上的一個注解@ResponseBody,剩下兩個需要注意的地方就是AjaxJson,ObjectMapper。

AjaxJson是自己封裝的一個model類,用來處理ajax的,至于ObjectMapper是用來轉換類型的具體的自己百度或者腦補吧,樓主也緊緊限于會用。下面貼上AjaxJson:

package com.zhongxin.web.ops.adrule.model;  import java.util.Map;  public class AjaxJson {      private boolean success = true;      private String msg = "ok";      private Object obj = null;      private Map<String, Object> attributes;      public boolean isSuccess() {     return success;   }   public void setSuccess(boolean success) {     this.success = success;   }   public String getMsg() {     return msg;   }   public void setMsg(String msg) {     this.msg = msg;   }   public Object getObj() {     return obj;   }   public void setObj(Object obj) {     this.obj = obj;   }   public Map<String, Object> getAttributes() {     return attributes;   }   public void setAttributes(Map<String, Object> attributes) {     this.attributes = attributes;   }    } 

這就是一個簡單的ajaxFileUpload 使用流程,歡迎探討!也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 拉孜县| 宁乡县| 固阳县| 巢湖市| 多伦县| 榆树市| 句容市| 武陟县| 田林县| 临邑县| 乐至县| 广元市| 甘洛县| 庆安县| 铜山县| 县级市| 古蔺县| 蒙山县| 东兴市| 榆社县| 阿坝县| 城市| 西华县| 罗田县| 泽普县| 巨鹿县| 西林县| 城固县| 门源| 城步| 福鼎市| 海城市| 淮南市| 甘南县| 环江| 定远县| 荥阳市| 海兴县| 洛宁县| 洛宁县| 将乐县|