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

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);
    }

}
时间: 2024-10-27 08:52:34

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

多种方式实现文件下载功能

(1)使用 NSURLConnection 直接方式 (2)使用 NSURLConnection 代理方式 (3)使用 NSURLSession 直接方式 (4)使用 NSURLSession 代理方式 (5)使用 AFNetworking 方式 附加功能: 使用 AFNetworking 中的 AFNetworkReachabilityManager 相关操作来检查网络情况: AFNetworkReachabilityStatusReachableViaWiFi:Wi-Fi 网络下 AFNet

Java UDP实现聊天功能代码

我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管对方是否正确接受到与否,所以当网络性能不好时它容易出现丢包的问题.(注意:UDP是基于数据报为单位进行传输的,而TCP是一种基于流进行传输的) 但是UDP很好的模拟了我们呢平时聊天的方式,可以很好的实现连续多次发送和接受,也就是简单的QQ聊天的功能. 现在来简要介绍Java中有关UDP编程相关的类:

php实现文件下载功能总结

php实现文件下载功能总结 其实所谓的下载按钮根本就是个A标签,里面记录着要下载文件的路径,如果要下载的文件恰巧是图片或者是文本文件,那么下载的时候就会被浏览器弹出一个新窗口或者直接页面跳转掉并且直接打开这个文件,解决方法是将下载的文件改成压缩后的格式或者是浏览器不能直接打开的格式. 下面我来说一下下载的流程:浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),服务器接受到该请求以后,马上运行该down.php文件,运行该文件的时候,必然要把将要被下载的文件读入内存当中,这里

JAVA文件下载功能问题解决日志

今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的controller方法中添加了下载的方法,type和async两个参数的四种组合都不行,弃用ajax,用window.location.href='file/download?path='+file;重新发一个新的下载请求之后,保存对话框终于弹出. 2.弹出之后,发现文件名乱码,后台的解决方案代码如下:

java web文件下载功能实现

需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>通过链接下载文件&

java—servlet实现文件下载功能

最近在学javaweb技术,利用所学知识做了一个简单的项目,在服务器上实现给用户下载文件的功能.自动列出文件夹下的文件提供下载,支持中文文件名. 结果图 其中使用了tomcat来部署服务器,代码中应用了少许EL表达式和JSTL标签,使用了jsp和servlet,当然还有java和http的基础知识,但是个人觉得重点是http的Content-Disposition头信息和Content-type头信息在servlet中下载方面的应用,详见DownloadPageServlet.java源码. 关

【Servlet】java web 文件下载功能实现

需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 [html] view plain copy <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body&

Spring Boot入门(10)实现文件下载功能

??在这篇博客中,我们将展示如何在Spring Boot中实现文件的下载功能. ??还是遵循笔者写博客的一贯风格,简单又不失详细,实用又能让你学会. ??本次建立的Spring Boot项目的主要功能为文件下载,而且这也是唯一功能,当然,作为例子,要尽可能简单,所以,功能简化为只下载E盘music_eg目录下的某一个文件. ??该Spring Boot项目的名称为file_download,其具体结构如下: build.gradle文件的代码如下: buildscript { ext { spr

js常用功能代码

js常用功能代码(持续更新): 1,--折叠与展开 <input id="btnDisplay" type="button" class="baocun2" value="添加" onclick="changeDisplay()" /> <script type="text/javascript"> function changeDisplay() { var h