在网络上,假设我们超链接地址对应于jpg档,txt档,点击链接,默认浏览器打开这些文件,而不是下载,那么,你如何实现竞争力的默认下载。

1.可通过自己写一个download.jsp来实现

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.net.*"%>
<%
//得到文件名称字和路径
String filename = request.getParameter("filename");
String filepath = request.getParameter("filepath");
String displayfilename = URLEncoder.encode(filename,"UTF-8");
try {
response.setContentType("application/x-download");
response.setHeader("Content-Disposition","attachment;filename=\"" + displayfilename + "\"");
//HttpServletContext httpServletContext = (HttpServletContext)application;
RequestDispatcher dis = application.getRequestDispatcher(filepath + filename);
//application.getRequestDispatcher(url)这里的url仅仅能是相对路径,如/upload/1.jpg
if (dis != null) {
dis.forward(request,response);
}
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
System.out.println("下载取消:" + filepath + filename);
}
out.clear();
out = pageContext.pushBody();
%>

当我们要链接图片(或其它浏览器默认打开的格式,这里以图片为例)时。把相应的文件名称和地址传入download.jsp的filename和filepath參数里。详细写法例如以下

<a class="blue-line-a" href=" /PackTool/download.jsp?

filename=WinGUI.exe&filepath=/other/WinGUI.exe">/other/WinGUI.exe</a>

通过这样方式,我们就能实现文件的默认下载了,而不是浏览器的默认打开。

2.通过文件输出流方式(推荐):

<%@ page language="java" contentType="application/x-msdownload"    pageEncoding="UTF-8"%>
<%@ page import="java.net.*"%>
<%@ page import="java.io.*"%>
<%@ page import="com.hikvision.modules.guide.util.*"%>
<%
//关于文件下载时採用文件流输出的方式处理:
//加上response.reset(),而且全部的%>后面不要换行。包含最后一个;
String filename = request.getParameter("filename");
String filepath = request.getParameter("filepath");
response.reset();//能够加也能够不加
response.setContentType("application/x-download");
//"想办法找到要提供下载的文件的物理路径+文件名称";D:/PackTools/shareFolder
String filedownload = GetSharePathXml.getShareFolderPath() + filename;
//"给用户提供的下载文件名称"
String filedisplay = filename;
filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); OutputStream outp = null;
FileInputStream in = null;
try
{
outp = response.getOutputStream();
in = new FileInputStream(filedownload); byte[] b = new byte[1024];
int i = 0; while((i = in.read(b)) > 0)
{
outp.write(b, 0, i);
}
outp.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(in != null)
{
in.close();
in = null;
}
if(outp != null)
{
outp.close();
out.clear();
outp = null;
}
}
%>

版权声明:本文博主原创文章。博客,未经同意不得转载。

图画(txt等一下)实施开放的默认下载的默认浏览器,而不是(Java文本)的更多相关文章

  1. 取消IE默认下载工具为迅雷

    需求:企业访问内部WEB系统下载文件时,IE默认下载工具设置为迅雷,则弹出迅雷下载框.现需要直接弹出IE下载保存框. 方案:打开迅雷,进行撤销默认下载工具. 1.迅雷5: 1.1. 打开迅雷下载工具 ...

  2. 设置IE浏览器的默认下载路径

    实现效果: 知识运用: Default Download Directory键 实现代码: private void button2_Click(object sender, EventArgs e) ...

  3. Ubuntu 16.04安装uGet替代迅雷,并在Chrome中设置为默认下载器

    uGet是采用aria2作为下载后端,所以两个软件都必须同时安装. 1.安装uGet sudo add-apt-repository ppa:plushuang-tw/uget-stable sudo ...

  4. (转)Jupyter默认目录和默认浏览器修改

    目录 1.总结:修改Anaconda中的Jupyter Notebook默认工作路径的三种方式 # 2.Jupyter默认目录和默认浏览器修改 1.总结:修改Anaconda中的Jupyter Not ...

  5. Tensorflow2.0默认下载数据集到C盘的修改方法

    jupyter(Win版本)下载数据集会默认到C盘下,Linux会默认到root下,修改方式如下· tf1.x: import os import tensorflow as tftf.disable ...

  6. 修改安卓AVD虚拟机的默认下载路径

    因为安卓虚拟机的默认下载路径是在C盘,会在C盘中的.android文件中下载虚拟机,非常的占用C盘的宝贵资源,而且我发现这个.android文件即使删掉,只要打开AndroidStudio软件,它就会 ...

  7. 1、怎样设置C#OpenFileDialog(文件选择窗体)的指定路径、文件格式等属性(设置打开默认路径、文件格式、窗体显示文本)

    C#的OpenFileDialog的常用属性设置 1.设置属性 1)设置弹出的指定路径(绝对路径.相等路径) 2)设置标题 3)设置文本格式 2.打开方式1(绝对路径) 2.1) 打开的路径

  8. [转]Jupyter默认目录和默认浏览器修改

    转摘于:https://blog.csdn.net/caterfreelyf/article/details/79774311 1.打开cmd,首先进入到Jupyter的安装目录,我的是在D:\Pyt ...

  9. Word打开默认显示缩略图,而不是文档结构图

    So easy! 1.打开Word文档,点击缩略图右侧的"X",关闭缩略图: 2.打开菜单[视图],勾选"文档结构图": 3.关闭当前Word文档: 4.再次打 ...

随机推荐

  1. poj 2786 - Keep the Customer Satisfied

    Description   Simon and Garfunkel Corporation (SG Corp.) is a large steel-making company with thousa ...

  2. TPanel的默认颜色存储在dfm中,读取后在Paint函数中设置刷子的颜色,然后填充整个背景

    声明如下: TCustomPanel = class(TCustomControl) private FFullRepaint: Boolean; FParentBackgroundSet: Bool ...

  3. cuzysdk购物模块 36kr+本期背景图

    说好的剧透,虽然来的稍微晚不少 cuzysdk(www.cuzy.com) 是一个手机淘宝客sdk,通过使用cuzy,可以获取taobao平台的推广商品数据,移动开发者把推广的商品数据呈现给用户,用户 ...

  4. LintCode 推断一个二叉树树是否是还有一个二叉树的子书

    有两个不同大小的二进制树: T1 有上百万的节点: T2 有好几百的节点. 请设计一种算法.判定 T2 是否为 T1的子树. /** * Definition of TreeNode: * class ...

  5. 让AllocateHwnd接受一般函数地址作参数(105篇博客)

    http://www.xuebuyuan.com/1889769.html Classes单元的AllocateHWnd函数是需要传入一个处理消息的类的方法的作为参数的,原型: function Al ...

  6. QS Network(最小生成树)

    题意:若两个QS之间要想连网,除了它们间网线的费用外,两者都要买适配器, 求使所有的QS都能连网的最小费用. 分析:这个除了边的权值外,顶点也有权值,因此要想求最小价值,必须算边及顶点的权值和. 解决 ...

  7. COCOS2D中对精灵的操作、对图片的各种操作

    内容简要: 1.初始化 2.创建无图的精灵 3.设置精灵贴图大小  4.添加入层中 5.对精灵进行缩放  6.对精灵宽或高进行缩放  7.旋转精灵 8.设置精灵透明度  9.精灵的镜像反转  10.设 ...

  8. BUG系列:转让startActivityForResult()&amp;onActivityResult()没有反应

    前天遇到了一个麻烦,还真是麻烦啊. 我使用startActivityForResult()&onActivityResult().由Activity-A 跳转到Activity-B 页面,然后 ...

  9. AngularJs打造一个简易权限系统

    AngularJs打造一个简易权限系统 一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJ ...

  10. [置顶] 大量相关gis资源网盘打包下载

    详细请下载附件 所有资源下载(网盘下载): http://laoheitan.bego.cc arcgis教程: http://www.bego.cc/file/23322579 ENVI教程: ht ...