struts2实现文件的下载

1.首先写前台的页面,
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.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">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<div>
<h4>文件下载</h4>
<s:url var="url" action="download"/>
<s:a href="%{url}">download files</s:a>
</div>
<s:fielderror></s:fielderror>
</body>
</html>

2.写后台的action,处理前台的请求
package cn.huas.struts2.fileupload;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport
{
//该属性值在配置文件中指定,Struts2会自动进行注入(即赋值),需要为该属性提供setter和 getter方法

private String inputPath;//指定要下载的文件的完整路径(路径名+文件名)

/*

* 实现下载的Action类应该提供一个返回InputStream实例的方法,该方法对应在

<result.../>里的inputName属性值为targetFile

*/

public InputStream getTargetFile() throws Exception{
System.out.println(inputPath);
File file = new File(ServletActionContext.getServletContext().getRealPath("/" )+"upload/1.txt");
InputStream is = new FileInputStream(file);
return is;
//我这里将文件名写死了,其实可以通过inputPath来动态设置,但在这里访问总是出现
Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <param name="inputName"> tag specified for this action. 的错误,到网上找了很多资料发现是inputName为null造成的后果,于是干脆不要它了。*/

3.配置struts.xml文件,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.multipart.maxSize" value="10000000"></constant>
<constant name="struts.multipart.saveDir" value="e:/upload"/>

<package name="cn.huas.struts2.fileupload" extends="struts-default">

<action name="download" class="cn.huas.struts2.fileupload.DownloadAction">

<!--指定被下载资源的位置-->

<param name="inputPath">1.txt</param>

<!--配置结果类型为stream的结果-->

<result name="success" type="stream">

<!--指定下载文件的文件类型-->

<param name="contentType">text/plain</param>

<!--指定下载文件的文件位置-->

<param name="inputName">targetFile</param>

<!--指定下载文件的下载方式及下载时的保存文件名,filename保存时的文件名必须有扩展名,扩展名指示了下载类型的图标-->

<param name="contentDisposition">

attachment;filename=1.txt

</param>

<!--指定下载文件的缓冲区大小-->

<param name="bufferSize">4096</param>

</result>

</action>
</package>
</struts>

}

//处理用户请求的execute方法,该方法返回success字符串

public String execute() throws Exception{

return "success";

}
}
4,最后可以在浏览器里面测试看到一个超链接,当点击的时候就会出现下载的对话框。
!qhyb.rar 当 CAD 缺失对应字体时,图纸文字会显示异常,出现乱码、问号。将下载好的字体文件复制到 AutoCAD 的 Fonts 文件夹中,即可恢复正常显示。 立即下载

相关推荐

政府科技管理部门如何实现科技成果高效转化?.docx

政府科技管理部门如何实现科技成果高效转化?

struts2实现文件查看、下载

  CreateTime--2017年9月7日10:25:33 Author:Marydon struts2实现文件查看、下载 1.界面展示 &lt;a style="color: #199ED8;" target="_blank" href="&lt;c:url value="/telemedicine/reseCons/viewFile.do?fileName=2015165...

weixin_33785972的博客 149

librdkafka Windows 包(可直接使用

librdkafka/win ├─ bin/ # 全部运行时dll + pdb调试符号 + plugins插件目录 ├─ include/ # 头文件 rdkafka.h └─ lib/ # .lib静态导入库(链接阶段使用

Struts2实现下载文件

Struts2框架和文件下载有关的类是org.apache.struts2.dispatcher.StreamResult,这个类的一些成员变量和下载有关,看源码 //下载文件的类型 protected String contentType = "text/plain"; //下载文件的长度 protected String contentLength; //

wnl_csdn的博客 1万+

Struts2实现文件下载

如果对于实现文件下载有了基础的认识,那么就可以知道文件下载其实就是HTTP请求头的控制,可以直接使用Servlet实现,也可以使用Struts2框架实现。相较于Servlet需要在代码中设置相应的参数,而Struts2框架提供的下载只需要做一些相应的配置,显得相对简单。具体步骤如下: 1.搭建简单的Struts2项目(参考Struts2的Example) 2.书写文件列表显示的Action...

Fly away 155

struts2实现文件下载

使用struts2实现文件下载: 1、 首先编写jsp页面 down 将encoding改为utf-8 2、 编写后台action 接收filename参数 private String filename;     public String getFilename() {         returnfilename;     }     publicvoid setFi

yinfuhao的专栏 402

Struts2实现文件下载功能

最近项目中需要做一个开发平台,第一个功能就是实现文档对外提供下载功能,项目中用到的是Struts2框架,因此写了一个简单的ACTION在此记录学习。 首先需要新建一个ACTION: import ins.framework.web.Struts2Action; import org.apache.commons.codec.binary.Base64; import java.io.File

tanyunlong_nice的专栏 2071

struts2实现下载各种文件

1、struts.xml&lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"&

xqhys的博客 2417

struts2实现文件批量下载

大家都知道struts2提供了文件下载功能,很方便很好用。废话不多说直接开始。         首先我们先对struts.xml进行配置,struts2的result 类型设为stream,请看如下配置: 2048        在这要介绍一下几个字段属性:        1、contentType,这个和文件上传

nethackatschool的专栏 3481

Struts2实现文件下载

先说下stream结果类型:它是用于实现文件下载功能,需要指定一个输入流,即inputStream参数,通过这个流我们就可以读取要下载文件内容。实现文件下载也并非如此简单,我们还需要对相关的参数进行配置,如MIME类型,HTTP请求头信息,缓冲区的大小等。 stream结果类型的配置参数 名称 作用 contenType 设置发送到游览器的MIME类型 contenLeng...

烟锁着秦楼的博客 1426

struts2实现文件下载功能

struts2实现文件下载功能 下面以实现一个图片下载功能为例: 1. 项目结构 2. web.xml <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc

光华小丸子 5892

国有企业如何推动科技创新与产业升级融合?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务如何实现数字化升级?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

兄弟MFC-J2330DW 中文维修手册

兄弟MFC-J2330DW 中文维修手册

CesiumForUnitySamples-v1.25.1

Cesium for Unity 是一个官方插件,它将 Cesium 强大的3D 地理空间平台能力深度集成到了 Unity 引擎中。简单来说,它让你能在 Unity 里创建出一个高精度的真实地球,并加载和探索全球范围内的海量地理数据

政府科技管理部门如何降低平台建设成本?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

上一篇: struts2实现文件上传
下一篇: struts1x与struts2x的区别
chen106106
博客等级 码龄16年 8粉丝 167原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值