springmvc ajax异步文件上传

1、导入相关jar包

* commons-fileupload-1.3.3.jar

* commons-io-2.5.jar

2、在springmvc-config.xml配置文件中进行一下配置:

<!--spring配置支持文件上传处理 MultipartResolver --> 
<bean id = "multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传限制 -->
    <property name="maxUploadSize" value="10000000"></property>
    <property name="defaultEncoding" value="utf-8"></property>

</bean>

3、使用 @ResponseBody注解、@ResponseBody注解

示例代码(上传单个文件)

//文件上传
@RequestMapping(value="/upload")
@ResponseBody
public Message uploadImg(HttpServletRequest request,@RequestParam("file") MultipartFile file) throws IllegalStateException, IOException{
    Message message = new Message();
    if(!file.isEmpty()){//判断文件非空、写入上传路劲
    //获取上传路径
    String path = request.getServletContext().getRealPath("/images/");
    System.out.println(path);
    //获取上传原始文件名
    String fileName = file.getOriginalFilename();
    System.out.println(fileName);
    //防止用户上传相同名称的图片
    String time = new Date().getTime()+"";
    fileName = time+"_"+fileName;
    File filePath = new File(path,fileName);//完整路径
    System.out.println(filePath);
    //判断路径是否存在、如果不存在、创建
    if(!filePath.getParentFile().exists()){
        filePath.getParentFile().mkdirs();
    }
    //上传图片
    file.transferTo(filePath);
    //生成缩略图
    String smallName = time+"_small_"+file.getOriginalFilename();
    File smallPath = new File(path, smallName);
    Thumbnails.of(filePath).scale(0.2).toFile(smallPath);
	 message.setCode(1);
	 message.setInfo(fileName);
	 return message;
    }else{
	 message.setCode(0);
	 message.setInfo("error");
	 return message;
    }		
}

上传多个文件(只需要传多个参数即可)

//多个文件上传
@RequestMapping(value="/upload2")
@ResponseBody
public Message uploadImgs(HttpServletRequest request, @RequestParam(value="file",required=false) MultipartFile file,
    @RequestParam(value="file1",required=false) MultipartFile file1) throws Exception{
			
    Message message = new Message();
    if(file!=null && !file.isEmpty()){//判断文件非空、写入上传路劲
        //获取上传路径
	String path = request.getServletContext().getRealPath("/images/");
	//获取上传原始文件名
	String fileName = file.getOriginalFilename();
	//防止用户上传相同名称的图片
	fileName = new Date().getTime()+"_"+fileName;
	File filePath = new File(path,fileName);//完整路径
	//判断路径是否存在、如果不存在、创建
	if(!filePath.getParentFile().exists()){
	    filePath.getParentFile().mkdirs();
	}
	//上传图片
	file.transferTo(filePath);
	    message.setCode(1);
	    message.setInfo(fileName);
	    return message;
    }
			
    if(file1!=null && !file1.isEmpty() ){//判断文件非空、写入上传路劲
	//获取上传路径
	String path = request.getServletContext().getRealPath("/images/");
	//获取上传原始文件名
	String fileName = file1.getOriginalFilename();
	//防止用户上传相同名称的图片
	fileName = new Date().getTime()+"_"+fileName;
	File filePath = new File(path,fileName);//完整路径
	//判断路径是否存在、如果不存在、创建
	if(!filePath.getParentFile().exists()){
	    filePath.getParentFile().mkdirs();
	}
	//上传图片
	file1.transferTo(filePath);
	message.setCode(1);
	message.setInfo(fileName);
	return message;
    }
			
	message.setCode(0);
	message.setInfo("error");
	return message;
}
		
@RequestMapping(value="/login")
public ModelAndView islogin(User user,HttpSession session){
    if(user.getUname().equals("admin")&&user.getUpwd().equals("admin")){
        session.setAttribute("user", user);
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");
        return mv;
    }else{
	ModelAndView mv = new ModelAndView();
	mv.setViewName("login");
	return mv;
    }	
}

4、前端需要使用ajaxfileupload.js(要配合Jeuery1.2以下版本使用)

示例代码:

$('#file').change(function() {
    $.ajaxFileUpload({
    url : 'user/upload2',//用于文件上传的服务器端请`求地址
    //type:'post',
    secureuri : false,//一般设置为false
    fileElementId : 'file',//文件上传空间的id属性  <input type="file" id="file" name="file" />
    dataType : 'text',//返回值类型 test
    success : function(data, status) //服务器成功响应处理函数
        {
	console.log(data);
	alert(data.info);
	if (data != null && data != "") {
	    $("#file").attr("title", data.info);
	}
    },
    error : function(data, status, e)//服务器响应失败处理函数
        {
	    alert(e);
        }
   });
});

5、导入thumbnailator可进行缩略图上传

示例代码:

@RequestMapping(value="/upload")
@ResponseBody
public Message uploadImg(HttpServletRequest request,@RequestParam("file") MultipartFile file) throws IllegalStateException, IOException{
    Message message = new Message();
    if(!file.isEmpty()){//判断文件非空、写入上传路劲
        //获取上传路径
	String path = request.getServletContext().getRealPath("/images/");
	System.out.println(path);
	//获取上传原始文件名
	String fileName = file.getOriginalFilename();
	System.out.println(fileName);
	//防止用户上传相同名称的图片
	String time = new Date().getTime()+"";
        fileName = time+"_"+fileName;
	File filePath = new File(path,fileName);//完整路径
	System.out.println(filePath);
	//判断路径是否存在、如果不存在、创建
	if(!filePath.getParentFile().exists()){
	    filePath.getParentFile().mkdirs();
	}
	//上传图片
	file.transferTo(filePath);
	//生成缩略图
	String smallName = time+"_small_"+file.getOriginalFilename();
	File smallPath = new File(path, smallName);
	Thumbnails.of(filePath).scale(0.2).toFile(smallPath);
	    message.setCode(1);
	    message.setInfo(fileName);
	    return message;
	}else{
	    message.setCode(0);
	    message.setInfo("error");
	    return message;
	}		
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现将 AJAX 异步提交的表单数据传递给 Spring MVC,可以采用以下步骤: 1. 在前端页面中,使用 jQuery 的 AJAX 方法将表单数据异步提交到后端的 Spring MVC 控制器中。 2. 在 Spring MVC 控制器中,使用 @RequestParam 注解或 HttpServletRequest 对象来获取 AJAX 提交的表单数据。 3. 对表单数据进行处理和验证,并将处理后的结果返回给前端页面或者进行其他业务逻辑操作。 以下是一个简单的示例代码: 前端页面: ```html <form id="myForm"> <input type="text" name="username"> <input type="password" name="password"> <button type="button" onclick="submitForm()">Submit</button> </form> <script> function submitForm() { var formData = $('#myForm').serialize(); $.ajax({ url: '/submitForm', type: 'POST', data: formData, success: function(result) { // 处理返回结果 } }); } </script> ``` Spring MVC 控制器: ```java @Controller public class MyController { @PostMapping("/submitForm") @ResponseBody public String submitForm(@RequestParam("username") String username, @RequestParam("password") String password) { // 处理表单数据 return "success"; } } ``` 在上述示例中,前端页面中的 submitForm() 方法使用 jQuery 的 serialize() 方法将表单数据序列化为字符串,并使用 AJAX 异步提交到后端的 Spring MVC 控制器中。 Spring MVC 控制器中的 submitForm() 方法使用 @RequestParam 注解获取 AJAX 提交的表单数据,并对表单数据进行处理和验证,最后返回一个字符串表示处理结果。其中,@ResponseBody 注解表示返回的字符串将直接作为响应体返回给前端页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值