上传表单
<form method="post" action="upload.action" enctype="multipart/form-data">
<input type="file" name="uf"/>
<input type="submit" value="Upload" />
</form>
如果使用struts标签的话,那么只需设置name就可以了.
BaseAction.java
import com.opensymphony.xwork2.ActionSupport;
import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;
public class BaseAction extends ActionSupport implements ServletContextAware {
protected ServletContext centext;
public void setServletContext(ServletContext centext) {
this.centext = centext;
}
}
这个是一个基类,只是为了是代码看起来整洁
fileUploadAction.java
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.commons.io.IOUtils;
import org.paboo.BaseAction;
public class fileUploadAction extends BaseAction {
private String fileUploadPath;
private String ufFileName;
private File uf;
// Getter&Setter
@Override
public String execute() throws Exception {
String path = super.centext.getRealPath(fileUploadPath);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(uf));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(path, ufFileName)));
IOUtils.copy(bis, bos);
bis.close();
bos.close();
return SUCCESS;
}
}
注意:这个里面不可以有名字类似于file\upload的变量,否则会报错.而且File的名字要和表单的文件元素的name同名
struts.xml
<action name="upload" class="org.paboo.uac.fileUploadAction">
<param name="fileUploadPath">upload</param>
<result name="success" type="redirect">upload/</result>
</action>
最后需要在这里配置下就OK了,param的值就是上传文件的WEB目录