博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2的单文件上传
阅读量:6794 次
发布时间:2019-06-26

本文共 3933 字,大约阅读时间需要 13 分钟。

第一步:首先写个上传文件的页面(简单的一个form表单)

文件上传

文件上传

文件上传1:

 

第二步:创建一个基类BaseAction.java,继承ActionSupport,并实现ServletRequestAware,ServletResponseAware,ServletContextAware三个接口,重写三个接口的set方法

public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware{    /**     * 编写一个基类,继承ActionSupport并实现相应的接口     * 以后的Action直接继承该类,就可以简单获取到Servlet API     * 这是一个典型的适配设计模式     * @author Owen     */    private static final long serialVersionUID = 7267018575222346353L;            @Override    public void setServletContext(ServletContext servletContext) {    }    @Override    public void setServletResponse(HttpServletResponse response) {    }    @Override    public void setServletRequest(HttpServletRequest request) {    }}

 

第三步:创建OneUploadAction请求处理类,继承BaseAction

public class OneUploadAction extends BaseAction {    private static final long serialVersionUID = -4445894434193884175L;//    该属性名必须和中name值一致    private File oneFile;//    真实名称    private String oneFileFileName;//    文件类型    private String oneFileContentType;        private HttpServletRequest request;        @Override    public void setServletRequest(HttpServletRequest request) {        this.request = request;    }    @Override    public String execute() throws Exception {//        获取保存上传文件在服务器的真是路径        String uploadPath = request.getServletContext().getRealPath("upload");        System.out.println(uploadPath);//目录真是路径        System.out.println("oneFile--"+oneFile.getName());//文件临时名称        System.out.println("oneFileFileName--"+oneFileFileName);//文件原始名称        System.out.println("oneFileContentType--"+oneFileContentType);//文件类型//        第一种:该步骤适合上传小文件//        将临时文件复制到硬盘上的真是路径        /*        File file = new File(uploadPath, oneFileFileName);//拼接文件的存放路径和存放文件的真实名称        FileUtils.copyFile(oneFile, file);//将临时文件复制到上面这个路径        */        //        第二种:适合大文件上传操作        /*InputStream is = null;        OutputStream os = null;                is = new FileInputStream(oneFile);        os = new FileOutputStream(new File(uploadPath,oneFileFileName));                byte[] buffer = new byte[500];        int length = 0;        while((length=is.read(buffer,0,buffer.length)) != -1){            os.write(buffer, 0,length);        }        os.close();        is.close();*/        copyFile(uploadPath);                return SUCCESS;    }    public void copyFile(String uploadPath){        InputStream is = null;        OutputStream os = null;                try {            is = new FileInputStream(oneFile);            os = new FileOutputStream(new File(uploadPath,oneFileFileName));                        byte[] buffer = new byte[500];            int len = 0;            while((len=is.read(buffer,0,buffer.length)) != -1){                os.write(buffer, 0,len);            }            os.close();            is.close();        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            }    public File getOneFile() {        return oneFile;    }    public void setOneFile(File oneFile) {        this.oneFile = oneFile;    }    public String getOneFileFileName() {        return oneFileFileName;    }    public void setOneFileFileName(String oneFileFileName) {        this.oneFileFileName = oneFileFileName;    }    public String getOneFileContentType() {        return oneFileContentType;    }    public void setOneFileContentType(String oneFileContentType) {        this.oneFileContentType = oneFileContentType;    }    }

 

第三步:配置struts.xml文件

/WEB-INF/jsp/one_upload_ok.jsp

 

转载于:https://www.cnblogs.com/myjavalife/p/4923093.html

你可能感兴趣的文章
PHP Convert array into csv
查看>>
easyui tree 点击文字展开节点
查看>>
2016阿里实习感悟
查看>>
jquery禁用右键、文本选择功能、复制按键的实现
查看>>
c memmove和memcpy的实现和区别
查看>>
语音消息配置让ERP系统开口"说话"
查看>>
解决 ubuntu 11.10 执行 apt-get update 后 鼠标指针不动的问题
查看>>
Android RecyclerView: Super Fast ListView 超级快速的Lis
查看>>
获取Spring中PropertyPlaceholderConfigurer的属性
查看>>
Redis配置文件详解
查看>>
Myeclipse安装aptana后首次启动报错问题
查看>>
怎么在ChemDraw Prime 15中实现分子三维旋转
查看>>
Access数据库重复记录删除器
查看>>
php function
查看>>
ubuntu 开机启动时自动运行程序
查看>>
Windows查看文件句柄
查看>>
端午骑行活动照
查看>>
alpine下安装swoole失败
查看>>
ttyd -- 分享任意命令行程序到网页上
查看>>
模态窗口的关闭确认和事件执行
查看>>