sturts2和kindeditor的文件上传,upload.parseRequest(request)得到的List为空

如题,使用kindeditor插件上传文件,

FileItemFactory factory = new DiskFileItemFactory();   
        
     ServletFileUpload upload = new ServletFileUpload(factory);   
  
     List items = upload.parseRequest(request);   
       
     Iterator iter = items.iterator();   
     while (iter.hasNext()) {   
         FileItem item = (FileItem) iter.next(); 
             
         //上传文件 
          if (!item.isFormField()) {
            ......
            ......
              try{   
                 File uploadedFile = new File(savePath,tempName);   
                        
                 item.write(uploadedFile);   
            }catch(Exception e){   
                 errorMsg = "上传文件失败。";   
            }     
         }   
     }


调用upload.parseRequest(request)来处理时,返回了空的items

 

导致原因是struts2把原始的原来S2为简化上传功能,把所有的enctype="multipart/form-data"表单做了wrapper最后把HttpServletResquest封装成 org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper

 

解决方法1:

web.xml修改

<filter-mapping>  
  <filter-name>struts2</filter-name>  
  <url-pattern>/*</url-pattern>  
</filter-mapping>

将/*修改为/*.action

<filter-mapping>  
  <filter-name>struts2</filter-name>  
  <url-pattern>/*.action</url-pattern>  
</filter-mapping>


方法2:

在struts2配置文件中增加

<constant name="struts.action.excludePattern" value="/kindeditor/jsp/upload_json.jsp"></constant>


 

方法3:

<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" 
 name="myRequestParser" class="com.MyRequestParser" 
  scope="default" optional="true" /> 
 <constant name="struts.multipart.handler" value="myRequestParser" /> 


 

package com; 
 import java.io.IOException; 
 import javax.servlet.http.HttpServletRequest; 

import org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest; 
public class MyRequestParser extends JakartaMultiPartRequest { 

 public void parse(HttpServletRequest servletRequest, String saveDir) throws IOException { 


 } 

 } 


虽然这个类什么也没有,但是必须得有。
 这样就可以解决 List items = upload.parseRequest(request);它为空的问题了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值