首页 > 代码库 > Java文件下载详解

Java文件下载详解

 1 public void doPost(HttpServletRequest request, HttpServletResponse response) 2             throws ServletException, IOException { 3  4           //创建要下载的文件的对象(参数为要下载的文件在服务器上的路径) 5            File serverFile=new File("D:/myText.doc"); 6             7            //设置要显示在保存窗口的文件名,如果文件名中有中文的话,则要设置字符集,否则会出现乱码。另外,要写上文件后缀名 8            String fileName=java.net.URLEncoder.encode("Java编程思想最新版.doc","utf-8"); 9            //该步是最关键的一步,使用setHeader()方法弹出"是否要保存"的对话框,打引号的部分都是固定的值,不要改变10            response.setHeader("Content-disposition","attachment;filename="+fileName);11           12            /*13             * 以下四行代码经测试似乎可有可无,可能是我测试的文件太小或者其他什么原因。。。14             */15            response.setContentType("application/msword");16            //定义下载文件的长度 /字节17            long fileLength=serverFile.length();18            //把长整形的文件长度转换为字符串19            String length=String.valueOf(fileLength);20            //设置文件长度(如果是Post请求,则这步不可少)21            response.setHeader("content_Length",length);22            23            /*24             *以上内容仅是下载一个空文件25             *以下内容用于将服务器中相应的文件内容以流的形式写入到该空文件中26             */27            //获得一个 ServletOutputStream(向客户端发送二进制数据的输出流)对象28            OutputStream servletOutPutStream=response.getOutputStream();29            //获得一个从服务器上的文件myFile中获得输入字节的输入流对象30            FileInputStream fileInputStream=new FileInputStream(serverFile);31            32            33            byte bytes[]=new byte[1024];//设置缓冲区为1024个字节,即1KB34            int len=0;35            //读取数据。返回值为读入缓冲区的字节总数,如果到达文件末尾,则返回-136            while((len=fileInputStream.read(bytes))!=-1)37            {   38                //将指定 byte数组中从下标 0 开始的 len个字节写入此文件输出流,(即读了多少就写入多少)39                servletOutPutStream.write(bytes,0,len); 40            }41            42            servletOutPutStream.close();43            fileInputStream.close();           44     }

 

Java文件下载详解