struts2的文件上传和下载

来源:互联网 发布:手机实用软件大全 编辑:程序博客网 时间:2024/06/03 03:21

1.     文件上传、下载

1.1.文件上传

1.1.1 必须上传的jar包

1.1.2 建立上传页面

    <center>

       <h1>文件上传</h1>

       <formaction="upload.action"method="post"enctype="multipart/form-data">

           上传人:<inputtype="text"name="fileUserName"/><br>

           上传文件:<inputtype="file"name="file"/><br>

           <inputtype="submit"value="上传文件"/>

       </form>

    </center>

1.1.3 upload.action:

public class UploadAction extends ActionSupport {

 

    // 接收前台传过来的值,定义上传人的变量

    private String fileUserName;

    // 定义上传文件的变量 struts2自动完成将file类型封装成File类。

    private File file;

    // 定义一个变量来接收文件名称

    private String fileFileName;

    // 定义一个变量来接收文件的类型。

    private String fileContentType;

 

    // 定义一个变量来接收保存路径

    private String address;

 

public void upload() throws IOException {

       System.out.println("上传人" +fileUserName);

       // 正常上传:给文件起个名称:知道上传地址:实现上传就可以。

 

       // struts2 提供一个拦截器fileUpload。在该拦截器中有inputName:该变量的值应该是File对象属性名。

       System.out.println("文件名称" +fileFileName);

       System.out.println("文件类型" +fileContentType);

 

       // 根据文件名来截取后缀名 substring:包括前,不包括后。

       String type = fileFileName.substring(fileFileName.lastIndexOf("."));

 

       // 定义上传的文件名称 UUID--不能重复。 fileName + type

       String fileName = UUID.randomUUID().toString();

 

      

       //  如果保存地址需要变动怎么办?可以将具体保存的位置用一个变量来代替 address;如何赋值?

       //  程序运行过程是。点击上传的时候,应该去读取struts.xml;

       // FileUtils工具类属于Apache.

       // copyFile:实现文件上传:srcFile:要上传的源文件,destFile:表示上传到哪个目录下,上传的名称是什么。

       FileUtils.copyFile(file, new File(address +fileName + type));

       System.out.println("上传文件完成");

    }

}

1.1.4struts.xml

<struts>

    <packagename="default"namespace="/"extends="struts-default">

       <!-- struts2:其他文件上传设置:可以设置上传文件的总大小。隐含说明struts2可以支持批量上传! -->

       <actionname="upload"class="com.bjsxt.Action.UploadAction"method="upload">

           <!-- 给变量赋值 -->

           <paramname="address">E:/temp/</param>

           <!-- struts2默认拦截器defaultStack 文件上传:比如说需要限制文件大小,或者限制文件后缀名 -->

           <interceptor-refname="defaultStack">

              <!-- 限制上传文件大小 MIME-->

              <paramname="fileUpload.maximumSize">1000000</param>

              <!-- 限制文件类型 :用途最多是上传图片jpg,png,gif.. -->

              <paramname="fileUpload.allowedExtensions">.doc,.docx</param>

           </interceptor-ref>

       </action>

    </package>

</struts>

 

1.2.文件下载

1.2.1 创建下载界面

<body>

    <center>

       <a href="download.action?fileName=hello.txt">文件下载</a>

    </center>    

</body>

1.2.2 创建Action

public class DownLoadAction extends ActionSupport{

//  定义一个变量来获取文件名称

    private String fileName;

//  定义一个FileInputStream对象

    private InputStream inputStream;

//  定义一个下载路径

    private String address;

public String download() throws FileNotFoundException{

       System.out.println("文件名称"+fileName);

       //  利用io流方式进行下载

       inputStream = new FileInputStream(new File(address+fileName));

       return SUCCESS;

    }

}

1.2.3 struts.xml

<actionname="download"class="com.bjsxt.Action.DownLoadAction"method="download">

         <paramname="address">E:/temp/</param>

         <!-- 文件下载需要使用type=stream

            inline: 下载方式浏览器能够解析的情况下,就解析。不能解析再下载!

            attachment: 无论浏览器是否能解析,都下载!

         -->

         <resulttype="stream">

            <paramname="contentDisposition">attachment;fileName=${fileName}</param>

         </result>

      </action>

原创粉丝点击