您的位置:首页 > 编程语言 > Java开发

基于Struts2的文件上传

2016-03-06 00:00 465 查看
摘要: 基于Struts2的文件上传

上传表单

<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目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: