SpringMVC文件上传报错常见错误与解决方法

11 篇文章 0 订阅

1、错误一

org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

解决方法1:

源代码:MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;

问题之一:跨服务器

解决代码:

 //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(request.getSession().getServletContext());

2、错误二

org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

源代码:FileItem item = (FileItem) iter.next();

问题:用了上述的解决方法的代码

解决代码:

 //获取文件
 MultipartFile file=multiRequest.getFile(iter.next().toString());

3、错误三

获取不到文件名或文件名乱码

源代码:

//获取文件
MultipartFile file=multipartRequest.getFile(iterString);
String fileName = file.getName();//错误的获取文件名,所以获取不到文件名
String fileName = file.getOriginalFilename();//获取到文件名,但文件名乱码

解决代码:

//response.setContentType("text/html;charset=utf-8"); 可设置或不设置
request.setCharacterEncoding("utf-8");//这个必须要
String fileName =new String(file.getOriginalFilename().getBytes(),"UTF-8");

4、完整源码

 response.setContentType("text/html;charset=utf-8");
 request.setCharacterEncoding("utf-8");
 if(ServletFileUpload.isMultipartContent(request))
  {
      try {
        		 //将request变成多部分request
                 //MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
        		 MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        	     MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
                //获取multiRequest 中所有的文件名
                 Iterator iter=multipartRequest.getFileNames();
                 while(iter.hasNext())
                 {  
                	 //一次遍历所有文件
                	 String iterString  =iter.next().toString();
                	 MultipartFile file=multipartRequest.getFile(iterString);
                	// FileItem item = (FileItem) iter.next();
                	 __filename = new String(file.getOriginalFilename().getBytes(),"UTF-8");
                	 File saveFile = new File(__upload_path+__filename);
                	 if (!saveFile.exists()) {
                		 saveFile.createNewFile();
    					}

                	 byte[]__buffer_file= file.getBytes();
                	 FileUtils.writeByteArrayToFile(saveFile, __buffer_file);
                       
                 }
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();

			}
        	
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值