Struts2实现文件上传

本文详细阐述了简化文件上传操作的方法,包括JSP页面的构建、Struts配置文件的精简以及Action类的实现。重点在于利用FileUtils.copyFile方法高效地将上传文件保存至指定目录,并讨论了其在不同文件类型上传过程中的适用性和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天的这文件上传比比之前的那个简单多,之前的那个是用到了I/O流啦,而且在Struts配置文件中也得写好几个项,还得进行特定的文件格式说明才允许上传等等...写这特不爽、嘿嘿..


(1)首先就是jap页面:

  <body>                                                                                                          上传文件时必须加上、
    <form action="${pageContext.request.contextPath}/page/upload" enctype="multipart/form-data" method="post">        
        <input type="file" name="upload"><br/>
        <input type="submit" value="上传">
    </form>
  </body>


(2)再就是Struts配置文件:(这次的挺简单,比用IO流少了许多呀、)

<!-- 设置上传文件大小为10兆 -->
    <constant name="struts.multipart.maxSize" value="10701096"></constant>

<!-- 上传文件 -->
        <action name="upload" class="cn.bdqn.action.Action" method="upload">
            <result >/page/upsuccess.jsp</result>
        </action>


(3)最后就是Action.java

    private File upload;//得到上传的文件
    private String uploadFileName;//上传文件的名字
    private String uploadContentType;//上传文件的格式

   //给出get/set方法

/**
     * 文件上传
     * @return
     * @throws Exception
     */
    public String upload() throws Exception{
        //设置文件上传的路径
        String realpath = ServletActionContext.getServletContext().getRealPath("/upload");
        if(upload!=null){
            File savefile = new File(new File(realpath),uploadFileName);
            if(!savefile.getParentFile().exists())        //得到这个目录并判断这个目录是否存在
                savefile.getParentFile().mkdir();         //创建一级目录
            FileUtils.copyFile(upload, savefile);
            ActionContext.getContext().put("msg", "上传成功");
        }
        System.out.println("上传文件:"+getUploadFileName()+"\n文件类型为:"+getUploadContentType()+"\n文件上传路径为:"+realpath);
        return this.SUCCESS;
    }


实现这次上传功能的主要方法就是用到 FileUtils.copyFile(upload, savefile);commons.io.jar包中。其实就是一个东西拷贝到另一个地方

其中upload为原文件,savefile为要拷到的目标位置,我们这里设置的是站点的/upload目录下 

这次上传文件不用在Struts配置文件中进行声明所传文件的格式了,各种类型文件都能上传成功、

Demo下载  输入提取:ik2e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值