java中struts2实现文件上传下载功能

这篇文章主要介绍了java中struts2实现文件上传下载功能的方法,以实例形式分析了struts2文件上传下载功能的实现技巧与相关问题,具有一定的参考借鉴价值,需要的朋友可以参考下

先谈一谈struts2实现文件的上传和下载实例实现的原理

Struts 2是通过Commons FileUpload文件上传。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

具体实现

一、创建index.jsp页面

   
选择上传文件
测试.txt 下载

创建result.jsp页面

   
成功上传的文件:

当然别忘了在每个页面上都添加上struts2 标签引用<%@taglib prefix="s" uri="/struts-tags" %>

二、创建updown.js文件,在index.jsp中引用

 function checkf(){ var files = document.getElementsByName("file"); if(files[0].value.length!=0){ return true; }else{ alert("请选择文件"); return false; } } function addMore() { var td = document.getElementById("more"); var br = document.createElement("br"); var input = document.createElement("input"); var button = document.createElement("input"); input.type = "file"; input.name = "file"; button.type = "button"; button.value = "Remove"; button.onclick = function() { td.removeChild(br); td.removeChild(input); td.removeChild(button); } td.appendChild(br); td.appendChild(input); td.appendChild(button); }

三、创建upDownloadAction.java

 package com.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.List; import javax.servlet.http.HttpServletRequest; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.ServletActionContext; public class UpDownloadAction extends ActionSupport { private static final long serialVersionUID = 1L; private List file;// 对应jsp中file标签 private List fileFileName;// private List fileContentType;// private String fileName;//获得jsp中pram参数 @SuppressWarnings("deprecation") // 文件上传 public String uploadFiile() throws Exception { String root = ServletActionContext.getServletContext().getRealPath( "/upload");// 上传路径 System.out.println(root); InputStream inputStream; File destFile; OutputStream os; for (int i = 0; i  0) { os.write(buffer, 0, length); } inputStream.close(); os.close(); } HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("fileName", fileFileName); return SUCCESS; } // 文件下载 public InputStream getDownloadFile() throws FileNotFoundException, UnsupportedEncodingException { System.out.println(getFileName()); // 如果下载文件名为中文,进行字符编码转换 ServletActionContext.getResponse().setHeader("Content-Disposition","attachment;fileName=" + java.net.URLEncoder.encode(fileName, "UTF-8")); InputStream inputStream = new FileInputStream("F:/" //使用绝对路径 ,从该路径下载“测试.txt"文件 + this.getFileName()); System.out.println(inputStream); return inputStream; } // 下载 public String downloadFile() throws Exception { return SUCCESS; } public String getFileName() throws UnsupportedEncodingException { return fileName; } public void setFileName(String fileName) throws UnsupportedEncodingException { this.fileName = new String(fileName.getBytes("ISO8859-1"), "utf-8"); } } 

注:属性的 get和set方法已省略。

四、最后是配置文件

1、web.xml配置

  struts2org.apache.struts2.dispatcher.FilterDispatcher struts2/*

2、struts.xml配置

    /jsp/result.jsp 409600 text/plain    application/txt;  attachment;filename="${fileName}" downloadFile2048

一个简单的Struts2多文件上传单文件下载就实现了。

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上就是java中struts2实现文件上传下载功能的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java