我想上传文件
jsp页面的表单中:
<form id="form1" name="form1" onsubmit="return check()"
method="post" enctype="multipart/form-data" action="<%=request.getContextPath() %>/song.do">地址:<input name="saddress" type="file" id="saddress" />如果没有 enctype="multipart/form-data" 那么程序可以正常运行
但是 这句是上传格式必须用到的啊,我加上这句,再运行
就报异常 java.lang.IllegalArgumentException 说参数SongForm.java内容:private String saddress;public String getSaddress() {
return saddress;
}
public void setSaddress(String saddress) {
this.saddress = saddress;
}
jsp页面的表单中:
<form id="form1" name="form1" onsubmit="return check()"
method="post" enctype="multipart/form-data" action="<%=request.getContextPath() %>/song.do">地址:<input name="saddress" type="file" id="saddress" />如果没有 enctype="multipart/form-data" 那么程序可以正常运行
但是 这句是上传格式必须用到的啊,我加上这句,再运行
就报异常 java.lang.IllegalArgumentException 说参数SongForm.java内容:private String saddress;public String getSaddress() {
return saddress;
}
public void setSaddress(String saddress) {
this.saddress = saddress;
}
解决方案 »
- java对文件加密和解密的原理是什么?
- linux下如何配置环境变量,调用其它包的类文件怎么配?
- 谁有现成的东西:JPanel A中 有一个 JPanel B、C,B、C可以在A中自由的支持鼠标拖动(类似JDesktop 跟 JInternalFrame)。并且需要停靠的
- 关于无包名类的导入问题
- 制作可执行jar包
- 开不了机!!急,解决500分。
- 怎么生成clob类型的变量
- 请问JAVA WEB START 这个软件是干什么用的?
- 怎样得到某一天是星期几
- MD5加密函数在netscape中运行的时候抛出NullPointer异常,但是在IE中运行是正常的,请大虾提示!!!(代码内详)
- 如何让java监测某个进程是否存在?谁知道?
- 有甚麽感觉?
org.apache.struts.action.RequestProcessor
主要是override,doForward这个方法就可以了。原因参考:http://www.ojava.net/simple/index.php?t2900.html
package xxx;
import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.upload.MultipartRequestWrapper;
public class RequestProcessor extends org.apache.struts.action.RequestProcessor { protected void doForward(String uri, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
HttpServletRequest myRequest = request;
if (request instanceof MultipartRequestWrapper) {
myRequest = ((MultipartRequestWrapper) request).getRequest();
}
super.doForward(uri, myRequest, response);
}
}
return (request);
}
String contentType = request.getContentType();
if ((contentType !=null) &&
contentType.startsWith("multipart/form-data")) {
return (new MultipartRequestWrapper(request));
}else{
return (request);
} }接下来我们需要作的就是将已经封装成MultipartRequestWrapper的HttpServletRequest进行还原。
解决方法:
① 写一个类,继承org.apache.struts.action.RequestProcessor ,并且override其中的doForward方法来进行解析。package org.luyang;
import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.upload.MultipartRequestWrapper;public class RequestProcessor extends org.apache.struts.action.RequestProcessor { protected void doForward(String uri, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
HttpServletRequest myRequest = request;
if (request instanceof MultipartRequestWrapper) {
myRequest = ((MultipartRequestWrapper) request).getRequest();
}
super.doForward(uri, myRequest, response);
}
}②在自己的struts-config.xml的<struts-config></struts-config>之间加入下面这句话 <controller processorClass="org.luyang.RequestProcessor" />
<message-resources parameter="ApplicationResources"/>以上是我现在知道的解决方案,不知道能不能暂时解决大家的问题。
struts-action中:
String saddress = songForm.getSaddress() 改为
FormFile saddress = songForm.getSaddress();