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

来源:互联网 发布:狗哥王兆辉 知乎 编辑:程序博客网 时间:2024/05/17 03:55

如题,使用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);它为空的问题了。

 

0 0
原创粉丝点击