springMVC 上传文件(spring4.0)

方法一:

javaConfig配置类文件

	    @Bean
	   public MultipartResolver multipartResolver () throws IOException{
	    	CommonsMultipartResolver multipartResolver =  new CommonsMultipartResolver();
	    	multipartResolver.setUploadTempDir(new FileSystemResource("/WEB-INF/upload"));
	    	multipartResolver.setMaxUploadSize(1024*1024*20);
	    	multipartResolver.setMaxInMemorySize(0);
	    	
		     return multipartResolver;
		   
	   }

控制器代码:

@RequestMapping("/register")
	public String register(HttpServletRequest request,@Valid  User user,Errors errors,@RequestPart("files")byte[]profile) throws IllegalStateException, IOException{
	
		if(errors.hasErrors()){
			return "tleaf";
		}
		long  startTime=System.currentTimeMillis();
        //将当前上下文初始化给  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="E:/springUpload"+file.getOriginalFilename();
                   //上传
                   file.transferTo(new File(path));
               }
                
           }
          
       }
       long  endTime=System.currentTimeMillis();
       System.out.println("方法1的运行时间:"+String.valueOf(endTime-startTime)+"ms");
       	return "success"; 
	}
前端代码:

 <form th:object="${user}" method="POST" th:action="@{/register}" enctype="multipart/form-data">
	   <div th:if="${#fields.hasErrors('*')}">
	   		<ul>
	   			<li th:each="err:${#fields.errors('*')}" th:text="${err}">输入有误</li>
	   		</ul>
	   
	   </div>
  		<label th:class="${#fields.hasErrors('username')}?'error'">用户名</label>
  		<input type="text" th:field="*{username}" th:class="${#fields.hasErrors('username')}?'error'">
  		<span th:if="${#fields.hasErrors('username')}" th:text="${#fields.errors('username')}"></span>
  		<label th:class="${#fields.hasErrors('password')}?'error'">用户名</label>
  		<input type="text" th:field="*{password}" th:class="${#fields.hasErrors('password')}?'error'">
  		<label>选择文件</label>
  		<input type="file" name="files" accept="image/jpeg,image/png,image/gif"/>
		<input type="submit" value="提交"/>
      </form>


方法二:

前端 javaconfig配置类代码与上面一样。


控制器代码如下:

@RequestMapping("/register")
	public String register(@RequestParam("files") CommonsMultipartFile file) throws IllegalStateException, IOException{
	
		long  startTime=System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
        String path="E:/"+new Date().getTime()+file.getOriginalFilename();
         
        File newFile=new File(path);
        //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
        file.transferTo(newFile);
        long  endTime=System.currentTimeMillis();
        System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
       	return "success"; 
	}

方法三:

配置前端同方法一

控制器代码:

	@RequestMapping("/register")
	public String register(@RequestParam("files") CommonsMultipartFile file) throws IllegalStateException, IOException{
	
		//用来检测程序运行时间
        long  startTime=System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
         
        try {
            //获取输出流
            OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename());
            //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
            InputStream is=file.getInputStream();
            int temp;
            //一个一个字节的读取并写入
            while((temp=is.read())!=(-1))
            {
                os.write(temp);
            }
           os.flush();
           os.close();
           is.close();
         
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        long  endTime=System.currentTimeMillis();
        System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms");
       	return "success"; 
	}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值