通知浏览器下载文件,而不是直接打开下载

 1 // 1.获取要下载的文件的绝对路径
 2         String realPath = this.getServletContext().getRealPath("/download/泉州行政区图0.jpg");
 3         System.out.println(realPath);
 4         // 2.获取要下载的文件名
 5         String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
 6         // 3.设置content-disposition响应头控制浏览器弹出保存框,若没有此句则浏览器会直接打开并显示文件。中文名要经过URLEncoder.encode编码,否则虽然客户端能下载但显示的名字是乱码
 7         response.setHeader("content-disposition", "attachment;filename=hehe" + URLEncoder.encode(fileName, "UTF-8"));
 8         // 4.获取要下载的文件输入流
 9         InputStream in = new FileInputStream(realPath);
10         int len = 0;
11         // 5.创建数据缓冲区
12         byte[] buffer = new byte[1024];
13         // 6.通过response对象获取OutputStream流
14         OutputStream out = response.getOutputStream();
15         // 7.将FileInputStream流写入到buffer缓冲区
16         while ((len = in.read(buffer)) > 0) {
17             // 8.使用OutputStream将缓冲区的数据输出到客户端浏览器
18             out.write(buffer, 0, len);
19         }
20     }

此代码未经测试,只是转载分享http://www.cnblogs.com/z-sm/p/5467048.html

时间: 2024-08-17 12:16:30

通知浏览器下载文件,而不是直接打开下载的相关文章

Python 给下载文件显示进度条和下载时间

其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了. 该模块调用了三个库:1.os 2.requests 3.time 话不多说,先上代码!!!. # 进度条模块 def progressbar(url,path): if not os.path.exists(path): # 看是否有该文件夹,没有则创建文件夹 os.mkdir(path) start = time.time() #下载开始时间 response = requests.get(url, st

PHP下载文件(隐藏真实的下载地址)

有时我们需要隐藏真实的文件下载地址,防止恶意下载,我们可以采用下面的方法(参考网络,侵权请告知) 以下为引用的内容: $file_name = "example.exe"; $file_dir = "/public/www/download/"; if (!file_exists($file_dir . $file_name)) { //检查文件是否存在 echo "文件未找到"; exit; } else { $file = fopen($fi

关于网页下载文件,使用数据流方式下载

关于文件下载,很多都是用href='文件地址',这样做是很不安全的,所以需要使用到文件流,以下代码用于下载一张图片. Response.BufferOutput = false; Response.Clear(); Response.ContentType = "application/x-msdownload"; Response.AppendHeader("Content-Disposition", "attachment; filename=&quo

unity下载文件三(http异步下载)

异步下载,顾名思义就是不影响你主线程使用客户端的时候,人家在后台搞你的明堂. 直接入主题,既然要下载,首先得请求,请求成功之后进行回调,这就是一个异步过程,异步回调的时间不可控. 1.首先请求下载. public bool DownLoadFile(DownLoadFileModel file) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.1.1:8080/" +

Win10系统IE浏览器能打开网页但无法下载文件的处理方法

在Win10系统中,很多没有安装下载软件的朋友默认就是使用IE来下载文件的,不过部分用户发现使用IE下载时出现点击无反应,无法下载的情况,那么如何解决此类问题呢?原因分析:出现此类情况大多是由于默认下载文件夹不存在引起的具体有如下几种方面.1.Win10系统安装好后修改了系统盘符修改系统盘符,IE浏览器默认的安装位置出现错误,导致IE无法运行,因此无法下载.建议:检查皇冠现金系统盘符是否和安装时的是一致的,若发生变化,把盘符重新改回和原来一致.2.默认下载文件夹不存在默认下载文件夹不存在,IE下

Js下载文件到本地(兼容多浏览器)

在客户端通过js下载文件,试过几种下载方式,iframe方式仅限于IE浏览器,window.open(url),location.href=url 这两种方式在chrome浏览器还会是直接打开文件而不是下载,百度N久没有结果,在谷歌还是找到答案了,下载链接在此. window.downloadFile = function (sUrl) { //iOS devices do not support downloading. We have to inform user about this. i

asp.net下载文件几种方式

protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite  下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题.  代码如下:  */ Response.ContentType = "application/x-zip-compressed";  Response

文件流的方式下载文件

//流方式下载 protected void Button4_Click(object sender, EventArgs e) { string fileName = "aaa.zip";//客户端保存的文件名 string filePath = Server.MapPath("DownLoad/aaa.zip");//路径 //以字符流的形式下载文件 FileStream fs = new FileStream(filePath, FileMode.Open);

asp.net C#实现下载文件的六种方法实例

protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite  下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题.  代码如下:  */ Response.ContentType = "application/x-zip-compressed";  Response