使用java、formData实现文件上传

  • Post author:
  • Post category:java


最近的一个项目需要进行报表文件上传,经过查找资料,实现了这个功能,前端使用了表单的formData对象,后台使用的是Java,支持多文件上传。

formData对象介绍详见 :

https://developer.mozilla.org/zh-CN/docs/Web/API/FormData

具体实现:

1、html:

<form id="upform">  
	<input type="file" name="uploadFile" id="uploadFile" accept=".rpx,.sht" multiple/>
</form>
<button type="submit" class="btn btn-primary" id="upload_ok">上传</button>

2、js:

$("#upload_ok").unbind().click(function(){
    var form = new FormData(document.getElementById("upform"));  
	$.ajax({
		url : "${contextPath}/sys/dash/uploadDash", 
		type : 'POST',
		data:form,
		async: false,  
		cache: false, 
		processData:false,
		contentType:false,
		success:function(res){ 
				 var result=eval('('+res+')');
				 if(result.uploadFlag){
						alert("上传成功 !!"); 
                 }	    
		},
		error:function(e){
				 alert("上传失败 !!"); 
		}
	});  
    		 
})

3、java处理:

//上传报表
@RequestMapping(value = {"/uploadDash"})
public void uploadDash(HttpServletRequest request, HttpServletResponse response, 
    @RequestParam(value = "uploadFile", required = false)  MultipartFile[]  uploadFiles) throws IOException { 
	Map<String,Object> resultMap=new HashMap <String, Object>();  
  	for(int i=0;i<uploadFiles.length;i++) {//支持上传多文件,所以使用循环
		String fileName = uploadFiles[i].getOriginalFilename ();//获取文件上传的名称 
		try{ 
		    String uploadPath=request.getRealPath("/WEB-INF/reportFiles/")+uploadFilePath;//上传至服务器目录
		    File files=new File(uploadPath,fileName);
		    if(!files.exists ()){
		         files.mkdirs ();
		    }
		    uploadFiles[i].transferTo (files); 
		 }catch (Exception e){
		         resultMap.put("uploadFlag",false); 
		 } 
  	 } 
        resultMap.put("uploadFlag",true);
        String json=JSONObject.fromObject (resultMap).toString ();
        writeJSON(response,json); 
}   

大致代码就是这些了,仅供参考~



版权声明:本文为weixin_42230473原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。