upload.parseRequest(request) null

在struts2下使用common-fileupload上传的时候,HttpServletRequest
请求被转成了MultiPartRequestWrapper,导致upload.parseRequest(request)为空。

使用过的方法:1.增加一个filter,在struts的过滤器之前设置MultiPartRequestWrapper
。http://auzll.iteye.com/blog/919981
2.设置struts配置。
http://topic.csdn.net/u/20090514/10/ba62c761-e591-4c9e-859a-87907634ea13.html


Struts2的配置文件加上如下内容:

<constant name="struts.multipart.maxSize" value="1152921504606846970006" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.multipart.saveDir" value="/tmp" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.devMode" value="false" />
<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"
name="myRequestParser" class="com.cn.RequestParseWrapper"
scope="default" optional="true" />
<constant name="struts.multipart.handler" value="myRequestParser" />

标红的这里你要写一个类,这个类的代码哪下所示:

public class RequestParseWrapper extends JakartaMultiPartRequest {  

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

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

 

 

servlet中代码

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
			DiskFileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);
			    upload.setHeaderEncoding("UTF-8");
			    upload.setSizeMax(500*1024*1024);//文件上传大小
			try {
				List items = upload.parseRequest(request);
		Iterator itr = items.iterator();
		while (itr.hasNext()) {
		FileItem item = (FileItem) itr.next();
		if (item.isFormField()) {
			System.out.println("表单参数名:" + item.getFieldName()
					+ ",表单参数值:" + item.getString("UTF-8"));
				if("pid".equals(item.getFieldName()))
							 pid =item.getString("UTF-8").toString();
			if("caName".equals(item.getFieldName()))
				{
							caName = URLDecoder.decode(item.getString("UTF-8").toString(),"utf-8");
				}
						if("address".equals(item.getFieldName()))
						{
							address =URLDecoder.decode(item.getString("UTF-8").toString(),"utf-8");
						}
						if("caX".equals(item.getFieldName()))
							caX =item.getString("UTF-8").toString();
						if("caY".equals(item.getFieldName()))
							caY =item.getString("UTF-8").toString();
						if("doPerson".equals(item.getFieldName()))
							doPerson =item.getString("UTF-8").toString();
						if(StringUtils.isBlank(pid))
						{
							clCaInfoSql.setRegistrant(doPerson);
							clCaInfoSql.setRegiTime(new Date());
						}else
						{
//							clCaInfoSql.setPid(pid);
							clCaInfoSql.setUpdatePerson(doPerson);
							clCaInfoSql.setUpdateTime(new Date());
						}
						clCaInfoSql.setIsdel("0");
						
						if(StringUtils.isNotBlank(address))
						{
							clCaInfoSql.setAddress(address);
						}
						
						if(StringUtils.isNotBlank(caName))
						{
							clCaInfoSql.setCaName(caName);
						}
						
						if(StringUtils.isNotBlank(caX))
						{
							clCaInfoSql.setCaX(Double.parseDouble(caX));
						}
						
						if(StringUtils.isNotBlank(caY))
						{
							clCaInfoSql.setCaY(Double.parseDouble(caY));
						}
					
					} else {
						if (item.getName() != null && !item.getName().equals("")) {

							String suffix = item.getName().substring(
									item.getName().lastIndexOf("."));// 文件后缀名
							String namebefore = item.getName().substring(0, item.getName().indexOf("."));
							String pdfStr = this.getClass().getClassLoader().getResource("/") .getPath();
							String basrUrl = pdfStr.substring(1,pdfStr.indexOf("/WEB-INF/classes"));//获取项目路径
							String fileUrl = basrUrl+"\\"+ "image"+"\\";//当前要储存的pdf路径
							
							//String imagePath =msgManagerponms.getMessage("image.path");//上传文件的保存路径
							File file1 = new File(fileUrl);
							if(!file1.exists())
								file1.mkdirs();
							//得到当前时间
//                             SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMddhhmmssSSS"); 
//                             String myTime = sdFormat.format(new Date()); 
							File file = new File(fileUrl, namebefore +suffix);// 文件保存的路径
							item.write(file);
							clCaInfoSql.setPic(namebefore +suffix);
					
						} else {
							System.out.println("选择上传文件");
							request.setAttribute("upload.message", "没有选择上传文件!");
						}
					}
				}

 

 

你可能感兴趣的:(request)