图画(txt等一下)实施开放的默认下载的默认浏览器,而不是(Java文本)
在网络上,假设我们超链接地址对应于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文本)的更多相关文章
- 取消IE默认下载工具为迅雷
需求:企业访问内部WEB系统下载文件时,IE默认下载工具设置为迅雷,则弹出迅雷下载框.现需要直接弹出IE下载保存框. 方案:打开迅雷,进行撤销默认下载工具. 1.迅雷5: 1.1. 打开迅雷下载工具 ...
- 设置IE浏览器的默认下载路径
实现效果: 知识运用: Default Download Directory键 实现代码: private void button2_Click(object sender, EventArgs e) ...
- Ubuntu 16.04安装uGet替代迅雷,并在Chrome中设置为默认下载器
uGet是采用aria2作为下载后端,所以两个软件都必须同时安装. 1.安装uGet sudo add-apt-repository ppa:plushuang-tw/uget-stable sudo ...
- (转)Jupyter默认目录和默认浏览器修改
目录 1.总结:修改Anaconda中的Jupyter Notebook默认工作路径的三种方式 # 2.Jupyter默认目录和默认浏览器修改 1.总结:修改Anaconda中的Jupyter Not ...
- Tensorflow2.0默认下载数据集到C盘的修改方法
jupyter(Win版本)下载数据集会默认到C盘下,Linux会默认到root下,修改方式如下· tf1.x: import os import tensorflow as tftf.disable ...
- 修改安卓AVD虚拟机的默认下载路径
因为安卓虚拟机的默认下载路径是在C盘,会在C盘中的.android文件中下载虚拟机,非常的占用C盘的宝贵资源,而且我发现这个.android文件即使删掉,只要打开AndroidStudio软件,它就会 ...
- 1、怎样设置C#OpenFileDialog(文件选择窗体)的指定路径、文件格式等属性(设置打开默认路径、文件格式、窗体显示文本)
C#的OpenFileDialog的常用属性设置 1.设置属性 1)设置弹出的指定路径(绝对路径.相等路径) 2)设置标题 3)设置文本格式 2.打开方式1(绝对路径) 2.1) 打开的路径
- [转]Jupyter默认目录和默认浏览器修改
转摘于:https://blog.csdn.net/caterfreelyf/article/details/79774311 1.打开cmd,首先进入到Jupyter的安装目录,我的是在D:\Pyt ...
- Word打开默认显示缩略图,而不是文档结构图
So easy! 1.打开Word文档,点击缩略图右侧的"X",关闭缩略图: 2.打开菜单[视图],勾选"文档结构图": 3.关闭当前Word文档: 4.再次打 ...
随机推荐
- 一次完整的HTTP请求所经历的7个步骤(前三步是浏览器工作,后四步是服务器工作)
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连 ...
- 使用perf生成Flame Graph(火焰图)
具体的步骤参见这里: <flame graph:图形化perf call stack数据的小工具> 使用SystemTap脚本制作火焰图,内存较少时,分配存储采样的数组可能失败,需 ...
- Linux终端颜色和标题设置
Linux给人最大的享受就是可以根据个人喜好去定制令自己舒服的系统配置,像终端颜色的设置就是一个典型的例子. 图1 系统默认状态下的终端显示 在没有经过自定义配置的终端下工作久了,难免容易疲劳,因为所 ...
- POJ 1273 Drainage Ditches(网络流,最大流)
Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...
- VC图形绘制双缓存的代码复用性讨论
在前文中已经讨论了如何实现界面绘制双缓存的问题,前文网址如下: http://www.2cto.com/kf/201111/112429.html 双缓存的主要思路是:先把图形绘制到内存DC中,然后再 ...
- Android studio导入Eclipse项目,和一些错误的解决
Android studio导入Eclipse开发的项目步骤如下 如果已经打开Android studio的话就选择你已打开的项目,关闭然后导入 开始导入 导入完成. 2.项目出错 Error:(13 ...
- IBinder在进程之间传递一个对象的形式(一)
主张 什么时候service通常被称为远程时的,用到aidl来定一个接口供service和client来使用,这个事实上就是使用Binder机制的IPC通信.当client bind service成 ...
- [Android学习笔记]页面布局
线性布局:LinearLayout 1.集成ViewGroup,故可容纳多个View 2.线性布局,可设置水平或者垂直方向 相对布局:RelativeLayout
- YUV格式具体解释
YUV是指亮度參量和色度參量分开表示的像素格式,而这样分开的优点就是不但能够避免相互干扰,还能够减少色度的採样率而不会对图像质量影响太大.YUV是一个比較笼统地说法,针对它的详细排列方式,能够分为非常 ...
- 真实世界里的钢铁侠-特斯拉汽车创始人埃隆·马斯克(Elon Musk)
真实世界里的钢铁侠--特斯拉汽车公司和SpaceX公司总裁马斯克(31岁).当我们得意于「站在山上踢几块石头下去」或是「站在风口上的猪」的成功理论的时候,我们真的成功了吗?我们到底创造了什么?改变了什 ...