首页 > 代码库 > Struts2 实现文件上传和下载
Struts2 实现文件上传和下载
实现上传功能
1.首先你应该有一个上传页面
<!-- file的name属性与action中的File类型属性保持一致,用于封装File控件对应的文件内容 --> <s:file name="upload" label="选择文件"></s:file>
2.然后创建一个文件上传的XXXaction
public class UploadAction extends ActionSupport implements ModelDriven<File> { // 封装上传文件属性 private File upload; // 封装上传文件的类型 private String uploadContentType; // 封装生成文件名称 private String uploadFileName; // 获取文件上传的路径 private String savePath; @Override public String execute() throws Exception { // 准备一个byte数组 byte[] buffer = new byte[1024]; // 读取文件 FileInputStream fis = new FileInputStream(getUpload()); // 保存文件,并设置保存目录路径 FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + this.getUploadFileName()); int length = fis.read(buffer); // 循环写入 while (length > 0) { // 每次写入length长度的内容 fos.write(buffer, 0, length); length = fis.read(buffer); } fis.close(); fos.flush(); fos.close(); return SUCCESS; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } // 获取上传文件的保存路径 // 通过读取存放目录货的保存路径 public String getSavePath() { return ServletActionContext.getServletContext().getRealPath(savePath); }
}
3.然后配置Struts.xml
添加上传的action元素
<!-- 上传文件的action --> <action name="uploadAction" class="cn.cnsdhzzl.action.UploadAction"> <!-- 通过param参数设置保存目录的路径 --> <param name="savePath">/upload</param> <result name="success">uploadSuccess.jsp</result> </action>
实现下载功能
1.首先你需要有一个下载链接
<-- 指向下载的action逻辑视图名 --><a href="downloadAction?fileName=123.jpg">点击下载</a>
2.创建一个下载XXXaction
public class DownloadAction extends ActionSupport { // 读取下载文件的目录 private String inputPath; // 下载文件的文件名 private String fileName; // 下载文件的输入流 private InputStream inputStream; // 下载文件的类型 private String conetntType; @Override public String execute() throws Exception { return SUCCESS; }public InputStream getInputStream() throws FileNotFoundException { String path = ServletActionContext.getServletContext().getRealPath( inputPath); return new BufferedInputStream(new FileInputStream(path + "\\" + fileName)); }//省略部分getset}
3.然后配置Struts.xml
添加下载的action元素
<!-- 下载文件的action --> <action name="downloadAction" class="cn.cnsdhzzl.action.DownloadAction"> <param name="inputPath">/upload</param> <result name="success" type="stream"> <!-- 设置文件类型 --> <param name="contentType">application/image/jpeg</param> <param name="inputName">inputStream</param> <!-- 分为两部分,即设置下载处理方式和设置下载文件显示的文件名 --> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="bufferSize">4096</param> </result> <result name="error">error.jsp</result> </action>
Struts2 实现文件上传和下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。