javaweb-JSP action中附件下载的写法
附件下载(包括图片,exl,word)在前台必须给出一个iframe 或者类似于window的窗口,另外,Java文件下载不能通过ajax进行请求,必须添加src属性
首选,前台的链接拼接html如下:
'<a id="attach_name'+index+'" style="width:100%" class="downloadAttach btn btn-primary"><i class="fa fa-file"></i> '+row.ATTACH_NAME+'</a>'+
'<iframe id="downloadFrame'+index+'" style="display:none;"></iframe>'
然后click事件如下:
//TODO 事件委托,下载附件按钮
$(".taskRows").on("click",".downloadAttach",function(){
var attachIndex = $(this).attr("id")//获取当前点击的元素ID
attachIndex = attachIndex.charAt(attachIndex.length-1);
var attach_name = $.trim($("#attach_name"+attachIndex).text());
alert(attach_name);
//根据附件名下载附件
if(attach_name!=null &&attach_name!=undefined)
{
//$("#downloadFrame"+attachIndex).attr("src",baseCtx+"/wpgl/downloadAttachFile.action?attachName="+attachName);
$("#downloadFrame"+attachIndex).attr("src",baseCtx+"/wpgl/downloadAttachFile.action?Id="+Id+"&attachName="+encodeURI(encodeURI(attachName)));
}
}); //action 后台一些主要的包和类 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.net.URLDecoder;
import java.net.URLEncoder; /**
* 下载文件
* @return
* @throws UnsupportedEncodingException
*/ @Action(value="downloadAttachFile")
public String downloadAttachFile(){
//从前台传过来的附件名字:格式是,“2006#系统测试.docx格式"
String downloadName =wpyId+"#"+attachName;
//传入的数据
System.out.println(downloadName);
try {
OutputStream os = this.response.getOutputStream(); //OutputStream os = this.getResponse().getOutputStream(); if (Util.isIE(this.request)) //判断客户端是否为IE
{ //编码
downloadName = URLEncoder.encode(downloadName, "UTF-8");
}
else
{
downloadName = new String(downloadName.getBytes("UTF-8"),"iso-8859-1");
}
//设置让浏览器弹出下载对话框的Header
this.response.setContentType("application/x-download");
this.response.addHeader("Content-Disposition","attachment;filename=\"" + downloadName + "\"");
this.response.flushBuffer();
//将前台的数据经过包装后(加了头数据,并经过编码)需要解码
String downloadName1 =URLDecoder.decode(downloadName, "UTF-8");
System.out.println(downloadName1);
//解码的结果输出
String bgFile=realPath + File.separator + downloadName1; FileInputStream fis = new FileInputStream(bgFile);
Util.copyStrem(fis, os);
fis.close();
os.close();
System.out.println("==========成功了!!===========");
} catch (IOException e) { e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
System.out.println("==========出错了!!===========");
} return NONE;
}
javaweb-JSP action中附件下载的写法的更多相关文章
- jsp action中附件下载的写法
//一些主要的包和类 import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java ...
- ThinkPHP---TP功能类之附件下载
[案例]实现公文中附件下载 (1)修改模板文件showList.html,展示列表文件信息 将数据表中的filename(原始文件名)展示到附件下 <td>{$vol.filename}& ...
- JSP+Servlet中使用jspsmartupload.jar进行图片上传下载
JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...
- Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法
Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...
- jsp页面中某个src,如某个iframe的src,应该填写什么?可以是html、jsp、servlet、action吗?是如何加载的?
jsp页面中某个src,如某个iframe的src,应该填写什么?可以是html.jsp.servlet.action吗?是如何加载的? 如有个test工程,其某个jsp中有个iframe,代码如下: ...
- struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式
本文演示了JSP中获取HTTP参数的几种方式,还有action中获取HTTP参数的几种方式. 1. 创建JSP页面(testParam.jsp) <%@ page language=" ...
- struts2中怎么把action中的值传递到jsp页面
对于如何把struts2的action中的值传到jsp页面中,主要的方法有2种: 使用转发视图利用request域中储存所需的值 使用重定向时存储数据进入session使其在jsp中可以获得 下面,让 ...
- jsp a标签传值到action中,action接收不到传值
因为需求,今天在action中加了一个marker属性,尝试了很多方法 set,get方法也生成了,但是就接收不到值. 这时我注意到action中有我之前使用ajax请求数据返回json格式数据,不以 ...
- 将 jsp 页面的值 传到struts2 action中(不是表单中的值)
JSP: 页面: <%@ page language="java" pageEncoding="GBK"%> <%@taglib prefi ...
随机推荐
- 用Visual Studio高版本号打开低版本号的project,转换时出现错误:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
解决方法是: 在电脑里面搜索发现 C:\Program Files\Microsoft Visual Studio 10.0\VC\bin C:\Windows\winsxs\x86_netf ...
- 百万级PHP网站Poppen.de的架构分享心得
在了解过世界最大的PHP站点,Facebook的后台技术后, 今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flick ...
- 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- Linux文件系统与磁盘管理
Linux文件系统与磁盘管理 有哪些文件系统: FAT:微软在Dos/Windows系列操作系统中共使用的一种文件系统的总称. exFAT(Extended File Allocation ...
- 我们工作到底为了什么 (HP大中华区总裁孙振耀退休感言)
我们工作到底为了什么 (HP大中华区总裁孙振耀退休感言) 一.关于工作与生活 我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司 ...
- [Sciter] 1. 创建最简单的Sciter项目
一些函数 sciter::debug_output_console _; 程序运行时自动启动一个控制台窗口,通过在_tiscript_中调用stdout.println来输出调试信息 SciterSe ...
- HBase 数据迁移
最近两年负责 HBase,经常被问到一些问题, 本着吸引一些粉丝.普及一点HBase 知识.服务一点阅读人群的目的,就先从 HBase 日常使用写起,后续逐渐深入数据设计.集群规划.性能调优.内核源码 ...
- C项目实践--俄罗斯方块(2)
在VS中新建win32 Application Proj,选择Empty ,完成TetrisWin项目创建.新建tetris.c和tetris.h两个文件,打开tetris.h文件. 首先要包括的是可 ...
- [开源下载] 【开源项目】EasySL for Silverlight 4
[开源下载] [开源项目]EasySL for Silverlight 4 [复制链接] silverlight 452 主题 7 好友 1万 积分 管理员 贡献 879 原创 0 银元 ...
- echo 到 stderr
This question is old, but you could do this, which facilitates reading: >&2 echo "error& ...