1. 文件上传、下载
1.1.文件上传
1.1.1 必须上传的jar包
1.1.2 建立上传页面
<center> <h1>文件上传</h1> <form action="upload.action" method="post" enctype="multipart/form-data"> 上传人:<input type="text" name="fileUserName"/><br> 上传文件:<input type="file" name="file"/><br> <input type="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> <package name="default" namespace="/" extends="struts-default"> <!-- struts2:其他文件上传设置:可以设置上传文件的总大小。隐含说明struts2可以支持批量上传! --> <action name="upload" class="com.bjsxt.Action.UploadAction" method="upload"> <!-- 给变量赋值 --> <param name="address">E:/temp/</param> <!-- struts2默认拦截器defaultStack 文件上传:比如说需要限制文件大小,或者限制文件后缀名 --> <interceptor-ref name="defaultStack"> <!-- 限制上传文件大小 MIME--> <param name="fileUpload.maximumSize">1000000</param> <!-- 限制文件类型 :用途最多是上传图片 jpg,png,gif.. --> <param name="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
<action name="download" class="com.bjsxt.Action.DownLoadAction" method="download"> <param name="address">E:/temp/</param> <!-- 文件下载需要使用type=stream inline: 下载方式浏览器能够解析的情况下,就解析。不能解析再下载! attachment: 无论浏览器是否能解析,都下载! --> <result type="stream"> <param name="contentDisposition">attachment;fileName=${fileName}</param> </result> </action> |