SpringMVC实现文件上传

一.引入相关jar

<!-- 文件上传 -->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.5</version>
</dependency> 

二.前端提交代码逻辑

    function goodsSave(){
    	 var form = new FormData(document.getElementById("goods_add_form"));
    	 $.ajax({
             url:"${APP_PATH}/uploadGoods",
             type:"post",
             data:form,
             processData:false,
             contentType:false,
             success:function(data){
                 if(data.code==1){
                	 parent.layer.msg("保存成功!",{icon:1,time:2000});
                 }else if(data.code==0){
                	 parent.layer.alert("保存失败!"+data.extend.va_msg,{icon:2});
                 }
             },
             error:function(e){
            	 parent.layer.alert("网络错误!请联系管理员!",{icon:2});
             }
         });  
    }

 三.后端相关代码

  springMVC中配置

<!-- 配置multipartresolver,注意:id名必须这样写,不然会报错 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="UTF-8"></property>
    <property name="maxInMemorySize" value="10240000"></property>
</bean>

  后端接收数据接口

/**带附件新增
	 * @param request
	 * @return
	 */
	@RequestMapping("/uploadGoods")
	@ResponseBody
	public StatusCode uploadGoods(HttpServletRequest request) {
		String userName=request.getParameter("userName");
		System.out.println("开始保存文件");
		System.out.println("userName"+userName);
		 //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
                request.getSession().getServletContext());
        //检查form中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request)) {
        	//将request变成多部分request
        	MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
        	//获取multiRequest 中所有的文件名
        	Iterator iter=multiRequest.getFileNames();
        	while(iter.hasNext()) {
        		//一次遍历所有文件
        		MultipartFile file=multiRequest.getFile(iter.next().toString());
        		if(file!=null) {
        			//获取保存图片地址的真实路径
        			String path=request.getServletContext().getRealPath("static/upload");
        			path=path+"\\"+file.getOriginalFilename();
        			//String path="F:/springUpload/"+file.getOriginalFilename();
        			System.out.println(path);
        			//检查文件格式是否为jpg,gif,png,bmp,jpeg
        			if(CheckUtils.checkFileIsImage(file.getOriginalFilename())){
        				//上传保存图片
            			try {
    						file.transferTo(new File(path));
    					} catch (IllegalStateException e) {
    						e.printStackTrace();
    						return StatusCode.fail().add("va_msg", "图片上传过程中发生异常!");
    					} catch (IOException e) {
    						e.printStackTrace();
    						return StatusCode.fail().add("va_msg", "图片上传过程中发生异常!");
    					}
        			}else {
        				return StatusCode.fail().add("va_msg", "图片格式必须为jpg,gif,png,bmp,jpeg!");
        			}
        			
        		}
        	}
        }
		return StatusCode.success();
	} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值