spring boot 下 ajax 上傳檔案
阿新 • • 發佈:2019-01-09
jsp:
<div class="modelFile fl"> <form method="POST" enctype="multipart/form-data" id="fileUploadForm"> <input type="file" fjid="fjid" tableid="${bjxx.id}" tasktype="${tasktype}" formid="fileUploadForm" onchange="uploadfile(this)" multiple="multiple" id="fileupload" name="files"> <p class="models"> <i class="icon"></i> 點選上傳 </p> </form> </div>
js:
/*** * 附件上傳 * @param obj file-input物件 */ function uploadfile(obj){ var fjId_Obj=$(obj).attr("fjid"); var formId_Obj=$(obj).attr("formid"); var form = $("#"+formId_Obj)[0]; var data = new FormData(form); var packageid=$("#"+fjId_Obj).val(); $.ajax({ url : "../newFiles/uploadFiles?packageid="+packageid, type : 'POST', enctype: 'multipart/form-data', data : data, processData: false, contentType: false, cache: false, timeout: 600000, success : function(data) { if(data.isok="true"){ $("#"+fjId_Obj).val(data.data.packageid); console.log(data); selectFile(data.data.packageid,obj); callback_Function(obj); //可重寫 }else{ utils.wrans.show("提示",data.message,function(){ return false; }); } }, error: function (e) { utils.wrans.show("提示",e.message,function(){ return false; }); } }); };
controller:
/** * 上傳 */ @RequestMapping("/uploadFiles") @ResponseBody public Map<String,Object> uploadFiles(@RequestParam("files") MultipartFile[] uploadfiles, String packageid){ MultiValueMap<String, Object> param= new LinkedMultiValueMap<>(); try { for (int i = 0; i < uploadfiles.length; ++i) { byte[] bytes = uploadfiles[i].getBytes(); MultipartFile uploadfile = uploadfiles[i]; ByteArrayResource arrRe = new ByteArrayResource(bytes){ /** * This implementation always returns {@code null}, * assuming that this resource type does not have a filename. */ @Override public String getFilename() { try { return URLEncoder.encode(uploadfile.getOriginalFilename(),"UTF-8"); } catch (UnsupportedEncodingException e) { return null; } } }; param.add("files",arrRe); } param.add("packageid",packageid); ; Map<String,Object> resultMap = newfileControllerFeign.uploadFiles(param); return resultMap; } catch (Exception e) { e.printStackTrace(); logger.error("上傳檔案:",e); return null; } }