基于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目录

转载于:https://my.oschina.net/L3on4Rd/blog/631654

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值