java使用ajax完成上传文件

使用ajax上传文件最重要的就是实例化FormData来进行上传文件: 1、html代码:

<div class="kuang">
	<p>文件上传</p>
	<div class="san3">
		<input type="file" name="fujianID" id="fujianID" onchange="UpdateFile()"/>
		<input type = "hidden" name="fujianid" id="file2" />
	</div>
</div>

2、ajax请求代码:

<script type="text/javascript">

//上传文件
function UpdateFile(){
          
   
	var file_fujian = $("input[name=fujianID]").val();//用户文件内容(文件)
	// 判断文件是否为空 
	if ( file_fujian== "") {
          
   
		layer.msg("青选择上传的附件",{
          
   icon:1,time:1000});
		return false;
	}
	//判断文件类型,根据自己需要来做判断
	/*var fujianID =  file_fujian.substring( file_fujian.lastIndexOf(".") + 1).toLowerCase();
	if(fujianID != "xls" && fujianID !="xlsx"&&fujianID !="docx"&&fujianID !="doc"&&fujianID !="txt"){
      	layer.msg("请选择Execl文或者word文件或者txt文件格式!",{icon:1,time:2000});
		return false;
	}*/
	//判断文件大小
	var size1 = $("input[name=fujianID]")[0].files[0].size;
	if (size1>104857600) {
          
   
		layer.msg("上传的附件不能大于100M",{
          
   icon:1,time:2000});
		return false;				
	}
	
	boo1 = true;
	var type = "file";
	var formData = new FormData();//这里需要实例化一个FormData来进行文件上传
	formData.append(type,$("#fujianID")[0].files[0]);
	$.ajax({
          
   
        type:POST,
        url:<%=request.getContextPath()%>/login/fujian_file,
		data:formData,
		async:false,
		processData:false,
		contentType:false,
		success:function(data){
          
   
			if (data=="error") {
          
   
				layer.msg("附件添加失败",{
          
   icon:1,time:2000});
			}else{
          
   
				$("#file2").val(data.list);
				layer.msg("附件已添加",{
          
   icon:1,time:2000});
			}
		}
	});
}

3、Java后台数据处理代码:

/**
	 * 上传文件
	 * @param file
	 * @param model
	 * @param request
	 * @return
	 */
	@RequestMapping(value="/fujian_file")
    @ResponseBody
    public Map<String, Object> uploadToUser(@RequestParam("file") MultipartFile file, Model model,HttpServletRequest request) {
          
   
		
		String fileName = file.getOriginalFilename();
		if (fileName.indexOf("\") != -1) {
          
   
		    fileName = fileName.substring(fileName.lastIndexOf("\"));
		}
		
		//String filePath = request.getContextPath()+ File.separator+"WebRoot"+ File.separator+"updatefile"+ File.separator;
		// 获取项目名称,文件上传位置
		String filePath =  request.getSession().getServletContext().getRealPath("/static/updatefile/files");
		File f = new File(filePath);
		if (!f.exists()) {
          
   
		    f.mkdirs();// 不存在路径则进行创建
		}
		FileOutputStream out = null;
		try {
          
   
		    // 重新自定义文件的名称
		    Date date = new Date();
		    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		    String d = sdf.format(date);// 时间
		    //拼接文件路径和文件名
		    filePath = filePath +File.separator+ d + fileName;
		    out = new FileOutputStream(filePath);
		    out.write(file.getBytes());
		    out.flush();//清空缓冲区的数据流
		    out.close();//关闭流
			} catch (Exception e) {
          
   
				//System.out.println(e); //打印抛出的异常
			}
		Map<String,Object> map = new HashMap<String,Object>();
		map.put("list",filePath );
		return map; // 返回文件地址
	}
经验分享 程序员 微信小程序 职场和发展