struts2进行文件的下载

首先搭建好struts2的开发环境,先新建一个下载的页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>My JSP 'download.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
  </head>

  <body>
    <a href="${pageContext.request.contextPath }/download.action">下载</a>
  </body>
</html>

在WebRoot下面建立一个download文件夹。里面放一个1.txt文件

之后再新建一个DownloadAction类,然后查看struts2的文档得知进行文件下载要设置一下参数,一般前四个要动态的生成

  • contentType - the stream mime-type as sent to the web browser (default = text/plain).
  • contentLength - the stream length in bytes (the browser displays a progress bar).
  • contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
  • inputName - the name of the InputStream property from the chained action (default = inputStream).
  • bufferSize - the size of the buffer to copy from input to output (default = 1024).
  • allowCaching if set to ‘false‘ it will set the headers ‘Pragma‘ and ‘Cache-Control‘ to ‘no-cahce‘, and prevent client from caching the content. (default = true)
  • contentCharSet if set to a string, ‘;charset=value‘ will be added to the content-type header, where value is the string set. If set to an expression, the result
    of evaluating the expression will be used. If not set, then no charset will be set on the header

package cn.lfd.web.download;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/*
 * 文件下载
 */
public class DownloadAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private String contentType;//要下载的文件的类型
	private long contentLength;//要下载的文件的长度
	private String contentDisposition;//Content-Disposition响应头,一般为attachment;filename=1.txt
	private InputStream inputStream;//文件输入流,默认是InputStream

	public String getContentType() {
		return contentType;
	}
	public long getContentLength() {
		return contentLength;
	}
	public String getContentDisposition() {
		return contentDisposition;
	}
	public InputStream getInputStream() {
		return inputStream;
	}

	@Override
	public String execute() throws Exception {
		contentType = "text/txt";
		contentDisposition = "attachment;filename=1.txt";
		//得到要下载的文件的路径
		String dir = ServletActionContext.getServletContext().getRealPath("/download/1.txt");
		inputStream = new FileInputStream(dir);
		contentLength = inputStream.available();
		return super.execute();
	}
}

最后在struts.xml配置文件中配置一下,注意一定要把result的type设置成stream

<action name="download" class="cn.lfd.web.download.DownloadAction">
			<result type="stream">
				<param name="bufferSize">2048</param>
			</result>
		</action>

这样用struts2就可以实现文件的下载



时间: 2024-12-15 20:02:41

struts2进行文件的下载的相关文章

struts2实现文件批量下载

大家都知道struts2提供了文件下载的功能,很方便很好用.废话不多说直接开始. 首先我们先对struts.xml进行配置,struts2的result 类型设为stream,请看如下配置: <span style="font-size:18px;"> <result name="toDownload" type="stream"> <param name="bufferSize">2048

struts2实现文件的下载

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1.编写下载文件的action.(做测试前现在WebRoot路径下建一个upload文件夹,里面放你要下载文件)该类为FileDownload.action</span> <pre name="code" class="java"

用struts2实现文件的上传下载

在做B/S系统时经常会有文件上传下载的需求,现就基于struts2框架实现其功能 Struts2框架默认采用Commons-fileupload组件完成文件上传功能.? 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应.? 客户端上传的文件, Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象.如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中

7、Struts2实现文件上传和下载

一.实现单个文件上传 1.创建如下web项目结构 2.在src下的com.action包下创建UploadAction.java 1 package com.action; 2 import java.io.File; 3 4 import javax.servlet.ServletContext; 5 6 import org.apache.commons.io.FileUtils; 7 import org.apache.struts2.ServletActionContext; 8 9 i

Struts2控制文件的上传与下载

Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制数据发送给数据. (2)Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即commons-io-2.2.jar和commons-fileupload-1.3.1.jar

Struts2入门(七)——Struts2的文件上传和下载

一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST"方式,并且将enctype属性设置为"multipart/form-data",该属性的默认值为"application/x-www-form-urlencoded",就是说,表单要写成以下这种形式: <form action="" metho

Struts2之文件上传下载

本篇文章主要介绍如何利用struts2进行文件的上传及下载,同时给出我在编写同时所遇到的一些问题的解决方案. 文件上传 前端页面 1 <!-- 引入struts标签 --> 2 <%@taglib prefix="s" uri="/struts-tags"%> 3 4 <!-- 5 使用struts中的<s:file></s:file>标签来选择文件. 6 设置name属性,则提交后将传递后给后台一个name属性

Struts2实现文件的上传与动态下载功能。

本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class FileBag implements java.io.Serializable {     // Fields     private Integer id;   //Id编号     privat

struts2实现文件查看、下载

CreateTime--2017年9月7日10:25:33 Author:Marydon 1.界面展示 <a style="color: #199ED8;" target="_blank" href="<c:url value="/telemedicine/reseCons/viewFile.do?fileName=201516529IO.jpg"/>">查看</a> <a style