服务器端实现文件下载功能代码

package com.cn;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Download
 */
@WebServlet("/Download")
public class Download extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Download() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String name = "aaa.*";// 文件名
        String uploadPath = UploadFileHelper.getRepositoryPath() + "//";// 文件来源

        String filePath = name;
        String fileName = name;
          //处理文件名包含中文,浏览器乱码
        if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
            fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// firefox浏览器
        } else {
            if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
                fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
            }
        }
        response.setContentType("text/plain");
        response.setHeader("Location", fileName);
        response.reset();
        response.setHeader("Cache-Control", "max-age=0");
        response.setHeader("Content-Disposition", "attachment; filename="
                + fileName);
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        OutputStream fos = null;
        InputStream fis = null;
        filePath = uploadPath + filePath;
        fis = new FileInputStream(filePath);
        bis = new BufferedInputStream(fis);
        fos = response.getOutputStream();
        bos = new BufferedOutputStream(fos);

        int bytesRead = 0;
        byte[] buffer = new byte[5 * 1024];
        while ((bytesRead = bis.read(buffer)) != -1) {
            bos.write(buffer, 0, bytesRead);// 将文件发送到客户端
        }
        bos.close();
        bis.close();
        fos.close();
        fis.close();

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1694479

时间: 2024-07-30 21:29:58

服务器端实现文件下载功能代码的相关文章

Struts2实现文件下载功能代码分享(文件名中文转码)_java

struts2文件下载功能实现代码如下所示: Action文件 public class DownLoadAction extends ActionSupport { /** * */ private static final long serialVersionUID = 5879762231742395104L; private String fileName;//用户请求的文件名 private String inputPath;//下载资源的路径(在struts配置文件中设置) publ

关于php支持分块与断点续传文件下载功能代码_php技巧

本文章要介绍了这篇文章是一篇关于php流下载,就是可以支持分块与断点续传文件下载,有需要的朋友可以看看.代码如下 复制代码 代码如下: $dowmFile = dirname ( __FILE__ ) . '/Nokia – Always Here.mp3′; //要下载的文件,绝对或相对 $dowmName = 'Nokia – Always Here.mp3′; ob_start (); getlocalfile ( $dowmFile, $dowmName ); flush (); ob_

php支持分块与断点续传文件下载功能代码

 代码如下 复制代码   $dowmFile = dirname ( __FILE__ ) . '/Nokia - Always Here.mp3'; //要下载的文件,绝对或相对 $dowmName = 'Nokia - Always Here.mp3'; ob_start (); getlocalfile ( $dowmFile, $dowmName ); flush (); ob_flush (); function getlocalfile($fname, $filename = '')

JavaWeb文件下载功能实例代码_java

在工作中遇到的一个下载文件的功能,自己将其抽取出来,代码简单,希望能帮到大家,好了,话不多说,上代码! public void downloadFile(File file, String downName, HttpServletRequest request, HttpServletResponse response) { OutputStream out = null; FileInputStream fin = null; BufferedInputStream bin = null;

android中集中html5,怎样实现文件下载功能,我现在有一个超链接

问题描述 android中集中html5,怎样实现文件下载功能,我现在有一个超链接 <a href="http://xxxxxxx/group1/M00/00/08/Ci09DVSb9n6AH76IAAX4AIw6xuk01.docx?attname=基于ANT的增量代码检查.docx&attachid=942'" download="基于ANT的增量代码检查.docx" class="graybtn">下载</a>

JSP文件下载功能的4种方法_JSP编程

对于网站来说,网站本身常常需要提供一些资源或者资料进行下载,说到下载莫过于最原始的方法就是在网页上提供下载的网址.今天讲述的还有另外的几种实现文件下载的方法,对于哪种方法更好这也是看自己的需求. 1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中.这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限).这个就不写示例了.  2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保

用Visual C#实现文件下载功能

visual|下载 一.概述: 本文通过一个实例向大家介绍用Visual C#进行Internet通讯编程的一些基本知识.我们知道.Net类包含了请求/响应层.应用协议层.传输层等层次.在本程序中,我们运用了位于请求/响应层的WebRequest类以及WebClient类等来实现高抽象程度的Internet通讯服务.本程序的功能是完成网络文件的下载. 二.实现原理: 程序实现的原理比较简单,主要用到了WebClient类和FileStream类.其中WebClient类处于System.Net名

ASP.NET MVC如何向浏览器发送文件以提供文件下载功能

文件下载一般都是需要一个文件选择对话框来选择存放文件的地方.我们可以自己做一个, 但简单的方面就是利用浏览器的现成功能. 所有的浏览器都包括文件下载功能,但文件选择对话框却 不是每个浏览器都有提供.这里我只选择我常用的两个浏览器:谷歌浏览器和搜狗浏览器. 先来一个 小例子: public ActionResult Index() { var path = Server.MapPath("~/frog.jpg.jpg"); return File(path, "iamge/jp

手机开发必备技巧:javascript及CSS功能代码分享

这篇文章主要介绍了手机开发必备技巧:javascript及CSS功能代码分享,本文讲解了viewport(可视区域)操作.链接操作.javascript事件等内容,需要的朋友可以参考下     1. viewport: 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域, 这是真正有效的区域.由于移动设备屏幕宽度不同于传统web,因此我们需要改变viewport; 实际上我们可以操作的属性有4 个:  代码如下: wi