`
新来的菜鸟
  • 浏览: 132693 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

文件下载

    博客分类:
  • JSP
阅读更多

文件下载

情景:在一些网络系统中,需要隐藏下载文件的真实地址,或者下载的文件需要一个程序来动态的确定后在传送给客户端。

方案:利用程序编码实现下载

作用:可以增加安全访问控制,只对经过授权认证的用户提供下载,可以从任意位置提供下载的数据。

利用程序实现下载需要设置 个报头:

Web 服务器需要告诉浏览器其所输出的内容的类型不是普通的文本文件或 HTML 文件,而是一个要保存到本地的下载文件。设置Content-Type 的值为:application/x-msdownload.

Exp:     response.setContentType("application/x-msdownload");

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

Web 服务器希望浏览器不直接处理相应的实体内容,而是由用户选择将相应的实体内容保存到一个文件中,这需要设置Content-Disposition 报头。该报头指定了接收程序处理数据内容的方式,在 HTTP 应用中只有 attachment 是标准方式attachment 表示要求用户干预。在 attachment 后面还可以指定 filename 参数,该参数是服务器建议浏览器将实体内容保存到文件中的文件名称。在设置 Content-Dispostion 之前一定要指定 Content-Type.

Exp:   response.setHeader("Content-Disposition", "attachment; filename=a.jpg");

 

因为要下载的文件可以是各种类型的文件,所以要将文件传送给客户端,其相应内容应该被当做二进制来处理,所以应该调用方法返回 ServeltOutputStream 对象来向客户端写入文件内容。                       

Exp:

public void doPost(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       String filename = request.getParameter("filename");

       System.out.println(filename);

       if (filename != null && !"".equals(filename)) {

           // 文件下载需要设置响应头信息

           // 告诉浏览器这是一个下载文件

           response.setContentType("application/x-msdownload");

           // 设置web浏览器不直接处理文件内容,并提供一个文件建议名称,注意文件名称的编码避免出现中文乱码

           response.setHeader("Content-Disposition""attachment; filename="

                  new String(filename.getBytes("utf-8"), "iso-8859-1"));

           // 获取需要下载的文件

           File file = new File(this.getServletContext().getRealPath(

                  "/WEB-INF/upload/" + filename));

           if (file.exists()) {

              // 获取输出流,将文件写出到客户端

              OutputStream os = response.getOutputStream();

              // 将下载文件读入

              FileInputStream fis = new FileInputStream(file);

              byte[] b = new byte[1024];

              while (fis.read(b) != -1) {

                  os.write(b);

              }

              fis.close();

              os.flush();

              os.close();

           }

       }

    }

关于中文文件名的下载,需要在设置文件名时进行编码。编码的两种方式

Exp:

(1)response.setHeader("Content-Disposition",

           "attachment;filename="+new String(filename.getBytes("utf-8"),"ISO-8859-1"));

(2)response.setHeader("Content-Disposition",

            "attachment;filename="+URLEncoder.encode("斯蒂芬", "utf-8")+".jpg");

 

分享到:
评论

相关推荐

    Fish文库文档下载工具

    "Fish文库文档下载工具"的核心功能在于其对多种文档网站的兼容性,能够突破常规的在线预览限制,将文档转化为可本地存储的PDF文件。这样,用户就可以随时随地查阅,无需依赖网络连接,极大地提高了学习和工作的效率...

    不需要会员的文档下载器

    在提供的压缩包文件中,“ExuiKrnln_Win32.lib”可能是一个动态链接库文件,用于支持“萝卜头文档下载器.exe”的功能实现。这类库文件通常包含可被其他程序调用的函数,可能包含了解析网页、模拟登录、抓取下载链接...

    doc,ppt等范文文档下载器

    标题中的“doc,ppt等范文文档下载器”指的是一个工具,它可以帮助用户获取doc和ppt这类格式的文档,特别是那些通常需要付费或消耗积分才能在特定网站上下载的文件。这种下载器通常通过抓取网页数据或者利用API接口...

    基于java的book118文档下载器.zip

    总之,"基于Java的book118文档下载器"是一个综合运用了网络请求、HTML解析、文件操作等多种Java技术的实用工具,其具体实现会涉及到网络编程、数据解析、文件I/O等多个计算机科学和技术领域。对于学习Java编程和网络...

    在线文档下载器

    在线文档下载器可能使用此库来解析和处理从网站下载的PDF文件,确保用户可以本地存储和阅读这些文档。 “iDocDown.exe”是主程序执行文件,是在线文档下载器的核心部分。它包含了实现下载功能的算法和逻辑,能够...

    ajax实现java文件下载

    6. **新建 文本文档.txt**:这可能是示例中的一个测试文件,用于演示如何通过Ajax进行下载。在实际应用中,这个文件的名称和类型将由用户选择或由业务逻辑决定。 具体实现步骤: 1. **前端**:在JSP文件中,使用...

    【原创力文档下载工具】利用python下载原创力文档 .zip

    【原创力文档下载工具】利用Python下载原创力文档是一个典型的Web爬虫应用场景,它涉及到Python编程语言、网络请求、文件处理以及可能的HTML解析技术。在这个项目中,开发者使用Python来自动化获取并下载原创力平台...

    萝卜头文档下载器1.1

    萝卜头文档下载器是一款Windows端的免费文档下载工具,可以帮助我们下载各种常用文档,降低获取成本!软件下载好后无需安装,就可以直接打开使用。 界面非常的干净整洁,支持下载的范围也非常广泛,支持范文、协议书...

    超级好用的百度文档下载工具

    标题中的“超级好用的百度文档下载工具”指的是一个专门设计用于从百度文库下载文档的应用程序。这个工具旨在提供一种高效、简便的方式来获取百度文库中的资源,从而避免在线阅读时可能出现的不便,比如广告干扰、...

    收费文档下载方法c.zip

    这些工具能够解析百度文库的页面,抓取文档内容并将其转换成本地文件。使用这类工具时,用户需要复制百度文库文档的网页链接,然后粘贴到工具的输入框内,按照提示进行操作。值得注意的是,这种方法可能受制于网站的...

    豆丁网文件下载器

    豆丁网免费下载器(冰点)无需登录也无需积分,只需要将需要下载的文档的网页地址复制在软件的录入框中就可以自由下载,并最终生成pdf文件。对部分pdf文件能够提取文字生成txt。 豆丁网免费下载器还支持自由下载百度、...

    小叶文档下载器.zip

    1、在本站下载解压,得到小叶文库下载器软件包; 2、首先前往文库网站找到需要下载的文库 3、将其文库地址复制粘贴到软件中,进行解析下载;...4、之后下载好的文件可在本自录下的Download文件夹进行查看。

    在线文档下载神器

    对于"Fish-v321"这个文件,根据上下文推测,这可能是某个特定的在线文档下载神器的版本号或者是该工具的安装包文件名。具体的功能和使用方法,可能需要进一步查阅相关软件的说明书或者进行实际操作来了解。总的来说...

    冰点文档下载器(亲测可用)

    需要注意的是,虽然冰点文档下载器可以免费下载这些文档,但下载的文件质量可能与原版有所差异,例如可能存在格式转换后的问题,如图片模糊或排版错乱。因此,在实际使用时,用户需要根据下载后的文件质量来调整自己...

    Visual Studio 2010 帮助文件下载助手

    visual studio 2010的帮助文档很难下载,一方面文件很多很大,全部文档超过1GB,使用微软自带的 或者辅助工具,由于没有发挥多线程和断点续传的特点,下载速度很慢,容易失败。 另一方面迅雷等下载工具,可以实现...

    文档下载工具

    至于文件`idocdown_v28`,这可能是该文档下载工具的版本号或者是程序的执行文件名。在实际使用中,用户需要将这个文件解压并安装在本地计算机上,然后按照软件的指示操作,输入目标文档的网址,工具便会自动开始下载...

    国密文档下载链接

    国密规范文档所有标准稳当的下载链接,SM2/SM3/SM4/SM9等,各种国密产品检测规范

    文档下载器.zip

    【描述】"文档下载器" 提供了一个集成化的解决方案,让用户能够轻松下载网络上的文档资源,特别是可能存在于各种文档分享平台上的PDF、SWF等格式的文件。它可能包含了用于处理不同文件类型的组件,以及一些支持程序...

    冰点文档下载器,支持下载网页百度文档

    在提供的压缩包子文件“Fish-v324-0712”中,我们可以推测这可能是冰点文档下载器的一个版本,其中可能包含了软件的执行文件、帮助文档、许可证文件等组成部分。用户在下载这个压缩包后,需要解压并按照指示安装和...

Global site tag (gtag.js) - Google Analytics