利用a标签下载文件(文件地址不限)

原创 2016年05月24日 10:40:02

利用a标签下载文件,向后台传入服务器端的文件地址,后台根据地址获取输入流后,在向前台输出文件流供下载

前台jsp:<a target="blank" href="../bizProblem/downFile.action?path=d:\\wendang.docx&fileid=f3js3sm3j4j3w4skj3k29">测试文档</a>

<span style="white-space:pre">	</span>/**
	 * 根据文件路径下载
	 * @return
	 */
	public String downFile(){
		try {
			String fileName = bizProblemService.selectByFileid(fileid);//根据文件id获取原文件名
			HttpServletResponse response = ServletActionContext.getResponse();//获取response
			//清空一下response对象,否则出现缓存什么的
			response.reset();
			//指明这是一个下载的respond
			response.setContentType("application/x-download");
			response.setCharacterEncoding("UTF-8");
			response.setHeader("Content-type", "text/html;charset=UTF-8");
			//<span style="font-family: Arial, Helvetica, sans-serif;">原文件名若为中文,需要转码</span>
			response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(fileName, "UTF-8"));
			
			ServletOutputStream sos = response.getOutputStream();  
			BufferedInputStream fin = new BufferedInputStream(new FileInputStream(path));  
			byte[] content = new byte[1024];  
			int length;  
			while ((length = fin.read(content, 0, content.length)) != -1) {  
			    sos.write(content, 0, length);  
			}  
			fin.close();  
			sos.flush();  
			sos.close();  
                } catch (IOException e) {
    	  	        e.printStackTrace();
                }		
		return null;//<span style="font-size:12px;">注意:此处不能返回SUCCESS,<span style="color: rgb(46, 46, 46); font-family: 'microsoft yahei', arial, simsun; line-height: 24px;">每个方法都返回的是一个ActionForward对象,而response是ActionForward对象参数,所以就会使response冲突! 
所以处理上传的action返回null就可以了,才不会报错:<span style="color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);">getOutputStream() has already been called for this response</span></span></span>
	}

关于a标签的说明:若a标签的href挂接的是可直接打开的链接,例如:“../image/test.png"或者“http://192.168.10.10:8080/image/test.png",并且文件为png、jpg等图片格式或者txt文档,则可直接在网页中打开浏览,若文件为docx、xls等文档,则会提供下载操作,不同浏览器对a标签的下载操作有不同的解析,所以下载操作可能不一致

版权声明:本文为博主原创文章,未经博主允许不得转载。

如何使用a标签下载文件

a标签
  • A_one2010
  • A_one2010
  • 2017年04月10日 10:54
  • 5175

<a>标签点击实现下载文件功能

【标签将参数转编码后用POST请求发送给后台】 遇到问题:1.标签通过url的形式给后台传参数是出现乱码的情况,前台页面显示的是正常的,到了action哪里得到的就是乱码   2.通过前端enco...
  • mipaifu328
  • mipaifu328
  • 2014年10月18日 08:04
  • 20509

利用a标签下载文件(文件地址不限)

利用a标签下载文件,向后台传入服务器端的文件地址,后台根据地址获取输入流后,在向前台输出文件流供下载 前台jsp:测试文档 /** * 根据文件路径下载 * @return */ pu...
  • wpz0713
  • wpz0713
  • 2016年05月24日 10:40
  • 7891

<A>标签下载文件 IE浏览器

下载导入程序在IE有用,加上一个Target的属性,会弹出一个新的窗口然后消失,下角出现打开,保存,取消的选框。...
  • a110658684
  • a110658684
  • 2017年01月16日 09:44
  • 3576

a标签下载txt文件,不是直接打开的方式

在做项目的时候经常会碰到上传下载,通常在上传完文件以后会把文件在项目中的相对路径存到数据库以便下载,如果想直接下载文件,不通过后台action,则可以直接把文件路径给a标签的href属性,例如: a...
  • fangqun663775
  • fangqun663775
  • 2017年05月04日 11:33
  • 4112

HTML中的a标签实现点击下载

HTML中的a标签实现点击下载 通常在咱们写项目的时候会遇到上传下载什么的,在上传完文件后会把文件的路径保存到数据库里以便下载,如果想不通过后台直接下载的话,可以把文件路径给a标签的属性hr...
  • qq_33545491
  • qq_33545491
  • 2017年09月28日 15:38
  • 522

通过a标签打开文件选择框实现文件上传

实现代码如下:   至此,我们可以让文件上传变得美观好看   直接上传代码,会出现问题,所以就上传图片了。...
  • sinat_29673403
  • sinat_29673403
  • 2016年11月17日 09:32
  • 1952

a 标签实现文件下载(解决打开的问题)

实现: a标签实现文件下载,是使用的相对路径下载。 js代码 a class="btn btn-success btn-sm" href="../docs/doc/" title="下载" ...
  • z1729734271
  • z1729734271
  • 2018年01月10日 17:06
  • 228

a标签实现单文件和多文件下载

a标签实现单文件和多文件下载 最近的项目需要做单文件下载和多文件下载,经过努力终于实现了,想把实现的方法记录一下,分享给大家,希望对你有所帮助 单文件下载 "'/file/downl...
  • aimi_aimi
  • aimi_aimi
  • 2017年12月22日 16:23
  • 77

应用HTML5 <a>标签下载文件

使用HTML5 标签可以直接下载文件而不用通过后台action。 点击下载 用户在点击这个链接的时候,就会直接下载这个文件,但是这里有个问题,像txt,jpg这些浏览器支持直接打开的文件是不会执行下载...
  • archer119
  • archer119
  • 2016年10月10日 14:20
  • 3783
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用a标签下载文件(文件地址不限)
举报原因:
原因补充:

(最多只允许输入30个字)