于 2002-12-12 11:09

:):):)任何类型的文件下载时都会弹出文件保存框的实现:(:(:(

简介:

从事WEB程序设计的朋友一定都遇到过这种情况吧,对于一些操作系统可以识别的文件类型如果直接给出文件的链接地址,浏览器就会自动调用相关程序来打开该文件,比如.doc、.txt、.html等等,还有一点这样就会把文件直接暴露给用户,不利于文件的保密工作。所以有必要提供一种方法来改善这种情形,本人通过实践找到了一种方法,希望大家一起探讨一下。

实验环境:

Ø  平台:Windows 2000 Advanced Server

Ø  WEB服务器:TOMCAT4.0.4

Ø  JDK:JDK1.3.1

实现方法:

本人是从事JAVA开发的,所以尝试使用SERVLET来实现该功能,现将代码贴于下面,以供大家参考

package com.timeschina.servlet;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

import com.timeschina.common.*;

/**

*

Title: 文件下载Servlet

*

Description: 文件下载Servlet

*

Copyright: Copyright (c) 2002

*

Company: Tiger, Ltd.

* @author TIM

* @version 1.0

*/

public class DownloadServlet extends HttpServlet

{

static final private String CONTENT_TYPE = "text/html; charset=GBK";

//Initialize global variables

public void init() throws ServletException

{

}

//Process the HTTP Get request

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

{

response.setContentType("text/html; charset=gb2312");

HttpSession session = request.getSession();

//要下载的文件名

//之所以这样处理,主要是因为文件名的中文化问题,这样处理的话,中文文件名也会正常显示

String downloadfile = new String((request.getParameter("downFile")).getBytes("iso8859-1"), "gb2312");

ServletContext context = getServletContext();

ServletConfig config = getServletConfig();

//获取要下载文件所在的目录,这里是对应于服务器上的物理路径

//目录的格式是这样的:

// 根目录(WEB主目录所对应的实际物理目录)

//+虚拟目录(下载文件存放的子目录)

downloadpath = context.getRealPath(File.separator)

+ config.getInitParameter("downloadPath")

+ File.separator;

//构建下载文件的对象

java.io.File file = new java.io.File(downloadpath + downloadfile);

//获得文件的长度

long filesize = file.length();

//设置输出格式

response.addHeader("content-type", "application/x-msdownload;");

response.addHeader("Content-Disposition", "attachment; filename=" + response.encodeURL(downloadfile));

response.addHeader("content-length", Long.toString(filesize));

//向客户端写入文件

java.io.FileInputStream fin = new java.io.FileInputStream(file);

byte[] b = new byte[1];

int j = 0;

while((j = fin.read(b)) > 0)

{

response.getOutputStream().write(b);

}

fin.close();

}

//Process the HTTP Post request

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

{

}

//Clean up resources

public void destroy()

{

}

}

下面是SERVLET配置文件WEB.XML中的内容:

DownloadServlet

com.timeschina.servlet.DownloadServlet

downloadPath

download

DownloadServlet

/DownloadServlet

20

下面是调用该SERVLET的例程

测试

注意:test.zip文件必须存在于WEB服务器主目录下的download目录下!!!

总结:

通过这种方法无论什么类型的文件当用户左键单击文件时,都会弹出另存为的对话框显示给用户。

java 实现文件下载保存框_Java开发网 - 任何类型的文件下载时都会弹出文件保存框的实现(原创)...相关推荐

  1. 案例:文件下载需求:1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载||中文文件问题

    文件下载需求:     1. 页面显示超链接     2. 点击超链接后弹出下载提示框     3. 完成图片文件下载 * 分析:     1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示 ...

  2. 弹出 文件 选择 html代码,HTML+CSS点击按钮弹出文件选择框的最佳方案

    网页设计中,对于文件选择框(HTML的file标签),出于美观或者体验等等的原因,我们对他的默认外观并不满意,我们可能希望点击一个按钮直接弹出文件选择框,这个很多人认为很简单,但是由于浏览器兼容的原因 ...

  3. C# 点击按钮弹出文件选择框

    点击按钮弹出文件选择框: // 文件选取 这里只允许txt文件private void button1_Click(object sender, EventArgs e){OpenFileDialog ...

  4. IE浏览器下载excel文件时不弹出下载保存提示框的解决方法

    在IE浏览器中下载文件的时候,下载保存的提示框不弹出了,特意咨询了一下解决的方法,特来和大家分享. 1.打开"我的电脑"后请点击工具列的:"工具 -- 文件夹选项&quo ...

  5. java反编译的语句_Java开发网 - 请教,java反编译的问题

    Posted by:tool Posted on:2004-12-31 06:39 有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic ...

  6. java servlet 获取mac地址_Java开发网 - 请教大家几个关于servlet取ip和mac地址的问题~~!...

    //Java获得CPU序列号和网卡Mac地址 /* 利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(Stri ...

  7. java添加关闭窗口事件_Java开发网 - 如何给JInternalFrame类的窗口添加关闭事件?...

    Posted by:shsen Posted on:2003-05-16 16:26 不太清楚怎么写啊,看看我的代码: public class DealInternalFrame extends J ...

  8. java at发短信_Java开发网 - 通过at指令怎样发送短信????

    Posted by:tiantao78 Posted on:2004-05-26 14:04 九十年代初,AT命令仅被用于modem操作.由于没有控制移动电话文本消息的先例,因此开发了一种叫SMS B ...

  9. java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件

    我想使用java来读取weblogic日志文件,而weblogic正在将日志写入其中(缓冲),但我只想读取内容,当我开始阅读它时. 我怎样才能做到这一点 ? public class DemoRead ...

最新文章

  1. 提升机器学习数学,理论基础的7本著作(文末附资源下载!)
  2. Spring入门简介
  3. Linux:网络编程
  4. c++中函数放在等号右边_如何从C或C++中的函数返回多个值?
  5. 中石油训练赛 - Perfect Tree(dfs)
  6. html5 支持表格吗,html5 – 在HTML 5中使用表格很好吗?
  7. ssh免密登陆机制示意图
  8. kdj买卖指标公式源码_通达信指标公式源码MACD背离KDJ背离指标
  9. XOR and Favorite Number(CF-617E)
  10. 北京邮电大学计算机考研资料汇总
  11. 智慧CAD手机精准看图隐私
  12. 实用的Android ui分析工具
  13. 一篇关于不同进制之间的转换、比如二进制、八进制、十进制、十六进制等
  14. 对重装系统彻底说再见——电脑C盘备份
  15. 【国庆福利】中奖名单公布
  16. 公众号开发完整页面1
  17. Oracle Database Instant Client
  18. 我的世界服务器如何修改天气,我的世界天气修改设置、天气关闭锁定、天气指令代码作弊码大全-66街机网...
  19. 3. 无重复字符的最长子串
  20. 解决联想电脑网络连接后网页出现“未连接到互联网”的问题

热门文章

  1. gridview中的种种超级链接
  2. 获取当前项目的根目录的方法
  3. 【百度地图API】如何批量转换为百度经纬度
  4. [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
  5. java和硬件交互_Java内存模型
  6. MongoDB(window安装及服务配置)
  7. 使用Linux创建自己的视频流服务器
  8. 今天的你将感谢_今天感谢开发人员:这是
  9. 什么是敏捷_什么是敏捷?
  10. symfony框架_为什么我们放弃传统的Symfony框架