Servlet文件下载

<a href="DownLoadServlet">下载</a> <br/>  
public class DownLoadServlet extends HttpServlet {  

    public DownLoadServlet() {
        super();
    }  

    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }  

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);
    }  

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //处理请求
        //读取要下载的文件
        File f = new File("E:/好久不见.mp3");
        if(f.exists()){
            FileInputStream  fis = new FileInputStream(f);
            String filename=URLEncoder.encode(f.getName(),"utf-8"); //解决中文文件名下载后乱码的问题
            byte[] b = new byte[fis.available()];
            fis.read(b);
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Disposition","attachment; filename="+filename+"");
            //获取响应报文输出流对象
            ServletOutputStream  out =response.getOutputStream();
            //输出
            out.write(b);
            out.flush();
            out.close();
        }     

    }  

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }  

}  
时间: 2024-10-06 13:08:21

Servlet文件下载的相关文章

servlet 文件下载

[本文简介] 一个servlet 文件下载 的简单例子. [文件夹结构] [java代码] 1 package com.zjm.www.servlet; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.IOException; 8 impor

j2ee,jsp,servlet文件下载server端

1.getOutputStream() has already been called for this response 报错的原因: 使用tomcat容器调用response.getOutputStream()方法的时候仅仅可以写二进制文件. 但调用requonse.getWriter()方法时,则仅仅可以在前台打印文本文件. 所以: 假设在jsp页面: outPutStream.flush(); outPutStream.close(); outPutStream=null; respon

j2ee,jsp,servlet文件下载服务器端

1.getOutputStream() has already been called for this response 报错的原因: 使用tomcat容器调用response.getOutputStream()方法的时候只能够写二进制文件. 但调用requonse.getWriter()方法时,则只能够在前台打印文本文件. 所以: 如果在jsp页面: outPutStream.flush(); outPutStream.close(); outPutStream=null; response

java/struts/Servlet文件下载与ftp文件下载

1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!downloadFile.action?transUrl=ftp://10.0.2.1/tazi/a.xml">请点击下载</a> 2.后台代码 Action或Servlet String s1=transUrl; // transUrl是前台接受的参数 s1=s1.substring(6); s

HTTP文件下载JAVA后台的实现

HTTP文件的下载后台JAVA代码 1.使用org.apache.http.impl.client.CloseableHttpClient 先上代码: public String downloadFile(String src_file, String dest_file) throws Throwable { String fileName = getFileName(src_file); try (CloseableHttpClient httpclient = HttpClients.cr

JavaWeb的各种中文乱码终极解决方法

一.Servlet输出乱码 1. 用servlet.getOutStream字节流输出中文,假设要输出的是String str ="钓鱼岛是中国的,无耻才是日本的". 1.1 若是本地服务器与本地客户端这种就不用说了,直接可以out.write(str.getBytes())可以输出没有问题.因为服务器中用str.getBytes()是采用默认本地的编码,比如GBK.而浏览器也解析时也用本地默认编码,两者是统一的,所以没有问题. 1.1 若服务器输出时用了, out.write(str

JavaWeb的各种中文乱码解决方法

一.Servlet输出乱码 1. 用servlet.getOutStream字节流输出中文,假设要输出的是String str ="钓鱼岛是中国的,无耻才是日本的". 1.1 若是本地服务器与本地客户端这种就不用说了,直接可以out.write(str.getBytes())可以输出没有问题.因为服务器中用str.getBytes()是采用默认本地的编码,比如GBK.而浏览器也解析时也用本地默认编码,两者是统一的,所以没有问题. 1.1 若服务器输出时用了, out.write(str

Servlet学习笔记(九)—— 文件下载

一.文件下载概述 例如图片或者HTML这类静态资源,只要在浏览器中打开正确的网址就可以下载.只要资源放在应用程序目录或者其下的子目录中,但不在WEB-INF下,Servlet/JSP容器就会将资源发送到浏览器.但有的时候,静态资源被保存在应用程序目录之外,或者保存在数据库中,或者有时候你需要控制让某些人能够看到这个资源,同时又要防止其他网站引用它.每当遇到这类情况时,就必须通过编程来发送资源. 通过编程的方式实现文件下载可是让我们有选择的将一个文件发送到浏览器. 为了将资源比如文件发送到浏览器,

Servlet学习笔记(八)—— 文件下载

一.文件下载概述 比如图片或者HTML这类静态资源,仅仅要在浏览器中打开正确的网址就行下载.仅仅要资源放在应用程序文件夹或者其下的子文件夹中,但不在WEB-INF下.Servlet/JSP容器就会将资源发送到浏览器. 但有的时候,静态资源被保存在应用程序文件夹之外,或者保存在数据库中.或者有时候你须要控制让某些人可以看到这个资源,同一时候又要防止其它站点引用它.每当遇到这类情况时,就必须通过编程来发送资源. 通过编程的方式实现文件下载但是让我们有选择的将一个文件发送到浏览器. 为了将资源比方文件