struts2 的文件上传

来源:互联网 发布:淘宝账户被冻结多久 编辑:程序博客网 时间:2024/05/21 11:31

Struts2的文件上传:

struts2-default中的默认配置文中,struts-default.xml,其中的defaultStack中,fileuploadinterceptor是默认的拦截器栈,所以在用户在客户端通过jsp页面请求服务器的Action时,就会通过这个fileuploadinterceptor拦截器,此时fileupload会将文件保存呢到指定的位置。但是其内部必须提供了相应的约束。

1、编写文件上传页面
1) 必须input type="file" 有name属性
2) form提交方式 必须采用 post方式
3) enctype="multipart/form-data"
* multipart/form-data 来自MIME协议
------------------------------------- 分隔线
username = 123
-------------------------------------
文件上传内容
-------------------------------------


public class FileUploadAction extends ActionSupport{
    
    // 接收文件上传的数据
    private File upload ; // 和页面中的file标签的name属性名字必须相同
    private String uploadContentType ; // 上传文件的类型 “file标签name属性名+ContentType”
    private String uploadFileName ; //上传文件的名称 “页面的file标签name属性名+FileName”
    public File getUpload() {
        return upload;
    }
    public void setUpload(File upload) {
        this.upload = upload;
    }
    public String getUploadContentType() {
        return uploadContentType;
    }
    public void setUploadContentType(String uploadContentType) {
        this.uploadContentType = uploadContentType;
    }
    public String getUploadFileName() {
        return uploadFileName;
    }
    public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }
    
    public String execute() throws Exception {
        System.out.println("文件上传、、、");
        // 在web项目中  获得绝对路径
        ServletContext context = ServletActionContext.getServletContext() ;
        String uploadDir = context.getRealPath("/upload");
        
        // 将文件写入到指定的目录
        // 当经过默认拦截器的fileupInterceptor时候,已经将客户端要上传的文件上传到服务器的指定位置,文件的类型是File,要是想把文件保存到自己想保存的位置,
        // 只需要用IO流将其封装(读取到流中,封装为InputStream),并用流写入到相应的目标位置即可。
        InputStream in = new BufferedInputStream(new FileInputStream(upload));
        OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(uploadDir,uploadFileName)));
        byte[] b = new byte[1024];
        int len = -1 ;
        while(( len = in.read(b)) != -1){
            out.write(b, 0, len);
        }
        
        in.close();
        out.close();
        return SUCCESS ;
    }
    
}

原创粉丝点击