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

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

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

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

具体实现

一、创建index.jsp页面

<body>
 <s:form action="upload" method="post" theme="simple" enctype="multipart/form-data">
<table align="center" width="50%" border="1">
<tr>
  <td>选择上传文件</td>
  <td id="more">
   <s:file name="file"></s:file>
   <input type="button" value="Add More.." onclick="addMore()">
  </td>
 </tr>
<tr>
  <td><s:submit type="button" value="submit" onclick="return checkf()"/></td>
  <td><s:reset value="reset "></s:reset></td>
 </tr>
</table>
<table align="center" width="50%" border="1">
<tr>
<td>测试.txt</td>
<td>
  <a href="<s:url value='download.action'><s:param name='fileName'>测试.txt</s:param> </s:url>">下载</a>
</td>
</tr>
</table>
</s:form>
</body>

创建result.jsp页面

<body>
<s:form>
 <div style="border:1px solid black">成功上传的文件:<br>
  <ul style="list-style-type:decimal">
 <s:iterator value="#request.fileName" id="file" status="status">
   <li><s:property/> </li>
 </s:iterator>
  </ul>
 </div>
</s:form>
</body>

当然别忘了在每个页面上都添加上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> file;// 对应jsp中file标签
 private List<String> fileFileName;//
 private List<String> 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 < file.size(); i++) {
   inputStream = new FileInputStream(file.get(i));
   destFile = new File(root, this.getFileFileName().get(i));
   os = new FileOutputStream(destFile);
   byte[] buffer = new byte[400];
   int length = 0;
   while ((length = inputStream.read(buffer)) > 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配置

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter> 

 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

2、struts.xml配置

<struts>
 <constant name="struts.i18n.encoding" value="utf-8"></constant>
 <constant name="struts.multipart.saveDir" value="f:\"></constant>
 <package name="struts2" extends="struts-default">
  <action name="upload" class="com.action.UpDownloadAction" method="uploadFiile">
   <result name="success">/jsp/result.jsp</result>
   <interceptor-ref name="fileUpload">
<!--maximumSize (可选) - 这个拦截器允许的上传到action中的文件最大长度(以byte为单位).
 注意这个参数和在webwork.properties中定义的属性没有关系,默认2MB-->
    <param name="maximumSize">409600</param>
<!--allowedTypes (可选) - 以逗号分割的contentType类型列表(例如text/html),
这些列表是这个拦截器允许的可以传到action中的contentType.如果没有指定就是允许任何上传类型.-->
    <param name="allowedTypes">
     text/plain
    </param>
   </interceptor-ref>
   <interceptor-ref name="defaultStack"></interceptor-ref>
  </action>
  <action name="download" class="com.action.UpDownloadAction" method="downloadFile" >
   <result name="success" type="stream">
   <!--指定文件下载类型  application/octet-stream默认值可以下载所有类型 -->
    <param name="contentType">
     application/txt;
    </param>
   <!-- 指定下载的文件名和显示方式 ,但注意中文名的乱码问题,解决办法是:进行编码处理-->
   <!--contentDisposition是文件下载的处理方式,包括内联(inline)和附件(attachment),
   默认是inline, 使用附件时这样配置:attachment;filename="文件名" 。-->
    <param name="contentDisposition">
     attachment;filename="${fileName}"
    </param>
   <!--由getDownloadFile()方法获得inputStream-->
    <param name="inputName">downloadFile</param>
<!--    指定下载文件的缓存大小-->
    <param name="bufferSize">2048</param>
   </result>
  </action>
 </package>
</struts>

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索Struts2多文件上传
Struts2单文件下载
java实现上传图片功能、java实现文件上传功能、struts2实现文件上传、struts2实现图片上传、struts实现文件上传,以便于您获取更多的相关知识。

时间: 2024-08-07 05:18:02

java中struts2实现文件上传下载功能_java的相关文章

java中struts2实现文件上传下载功能实例解析_java

本文实例讲述了java中struts2实现文件上传下载功能实现方法.分享给大家供大家参考.具体分析如下: 1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签   复制代码 代码如下: <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">

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

1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签    代码如下 复制代码 <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">      <input type="file" name="upl

JavaEE中struts2实现文件上传下载功能实例解析_java

本文实例为大家分享了struts2实现文件上传下载的具体实现代码,供大家参考,具体内容如下 一.文件上传 struts提交的文件组件上传, 前台: 1).提交方式POST 2).表单类型 multipart/form-data 3).input type=file 后台: Apache提供的FileUpload组件 核心类: FileItemFactory FileItem的工厂 ServletFileUpload servlet 中的文件上传的核心类 FileItem 封装了上传的表单文件项的

JavaWeb中struts2实现文件上传下载功能实例解析_java

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的源代码进行一下讲解,这里需要导入文件下载上传的两个jar文件,一个是commons-fileupload-1.2.2.jar,另一个是commons-io-2.0.

java中Struts2 的文件上传和下载示例_java

文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置为 post 需添加 <input type="file"> 字段. Struts 对文件上传的支持 在 Struts 应用程序里, FileUpload 拦截器和 Jakarta Commons FileUpload 组件可以完成文件的上传. 步骤: 在 Jsp 页面的文件上

ASP.NET中常用的文件上传下载方法

asp.net|上传|下载     文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括:1.如何解决文件上传大小的限制2.以文件形式保存到服务器3.转换成二进制字节流保存到数据库以及下载方法4.上传Internet上的资源 第一部分:    首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文件来自定义最大文件大小,如下:<

java 缩略图-Java中如何实现文件上传同时将文件首页生成缩略图保存

问题描述 Java中如何实现文件上传同时将文件首页生成缩略图保存 Java中如何实现文件上传同时将文件首页生成缩略图保存: 设想是在Java中模拟打印,将第一页获取生成图片,但是不知道怎么做 解决方案 什么叫文件首页?如果只是生产缩略图,java图像api直接搞定 解决方案二: 可否发下源码!!1976910941@qq.com 谢谢

java文件上传下载功能实现代码_java

本文实例为大家分享了文件上传下载java实现代码,供大家参考,具体内容如下 前台: 1. 提交方式:post2. 表单中有文件上传的表单项: <input type="file" />3. 指定表单类型:     默认类型:enctype="application/x-www-form-urlencoded"     文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件!

JavaWeb文件上传下载功能示例解析_java

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 1. 上传简单示例 Jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&g