博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java文件下载
阅读量:4042 次
发布时间:2019-05-24

本文共 3418 字,大约阅读时间需要 11 分钟。

Java文件下载的几种方式

<script type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length > 300) { text = text + "/r/n/n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } </script>

     public  HttpServletResponse download(String path, HttpServletResponse response) {

         try  {
            
//  path是指欲下载的文件的路径。
            File file  =   new  File(path);
            
//  取得文件名。
            String filename  =  file.getName();
            
//  取得文件的后缀名。
            String ext  =  filename.substring(filename.lastIndexOf( " . " +   1 ).toUpperCase();
            
//  以流的形式下载文件。
            InputStream fis  =   new  BufferedInputStream( new  FileInputStream(path));
            
byte [] buffer  =   new   byte [fis.available()];
            fis.read(buffer);
            fis.close();
            
//  清空response
            response.reset();
            
//  设置response的Header
            response.addHeader( " Content-Disposition " " attachment;filename= "   +   new  String(filename.getBytes()));
            response.addHeader(
" Content-Length " ""   +  file.length());
            OutputStream toClient 
=   new  BufferedOutputStream(response.getOutputStream());
            response.setContentType(
" application/octet-stream " );
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } 
catch  (IOException ex) {
            ex.printStackTrace();
        }
        
return  response;
    }
    
public   void  downloadLocal(HttpServletResponse response)  throws  FileNotFoundException {
        
//  下载本地文件
        String fileName  =   " Operator.doc " .toString();  //  文件的默认保存名
        
//  读到流中
        InputStream inStream  =   new  FileInputStream( " c:/Operator.doc " ); //  文件的存放路径
        
//  设置输出的格式
        response.reset();
        response.setContentType(
" bin " );
        response.addHeader(
" Content-Disposition " " attachment; filename=/ ""  + fileName +  " / "" );
        
//  循环取出流中的数 据
         byte [] b  =   new   byte [ 100 ];
        
int  len;
        
try  {
            
while  ((len  =  inStream.read(b))  >   0 )
                response.getOutputStream().write(b, 
0 , len);
            inStream.close();
        } 
catch  (IOException e) {
            e.printStackTrace();
        }
    }
    
public   void  downloadNet(HttpServletResponse response)  throws  MalformedURLException {
        
//  下载网络文件
         int  bytesum  =   0 ;
        
int  byteread  =   0 ;
        URL url 
=   new  URL( " windine.blogdriver.com/logo.gif " );
        
try  {
            URLConnection conn 
=  url.openConnection();
            InputStream inStream 
=  conn.getInputStream();
            FileOutputStream fs 
=   new  FileOutputStream( " c:/abc.gif " );
            
byte [] buffer  =   new   byte [ 1204 ];
            
int  length;
            
while  ((byteread  =  inStream.read(buffer))  !=   - 1 ) {
                bytesum 
+=  byteread;
                System.out.println(bytesum);
                fs.write(buffer, 
0 , byteread);
            }
        } 
catch  (FileNotFoundException e) {
            e.printStackTrace();
        } 
catch  (IOException e) {
            e.printStackTrace();
        }
    }

//支持在线打开文件的一种方式
    
public
 
void
 downLoad(String filePath, HttpServletResponse response, 
boolean
 isOnLine) 
throws
 Exception {
        File f 
=
 
new
 File(filePath);
        
if
 (
!
f.exists()) {
            response.sendError(
404
"
File not found!
"
);
            
return
;
        }
        BufferedInputStream br 
=
 
new
 BufferedInputStream(
new
 FileInputStream(f));
        
byte
[] buf 
=
 
new
 
byte
[
1024
];
        
int
 len 
=
 
0
;
        response.reset(); 
//
 非常重要
        
if
 (isOnLine) { 
//
 在线打开方式
            URL u 
=
 
new
 URL(
"
file:///
"
 
+
 filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader(
"
Content-Disposition
"
"
inline; filename=
"
 
+
 f.getName());
            
//
 文件名应该编码成UTF-8
        } 
else
 { 
//
 纯下载方式
            response.setContentType(
"
application/x-msdownload
"
);
            response.setHeader(
"
Content-Disposition
"
"
attachment; filename=
"
 
+
 f.getName());
        }
        OutputStream out 
=
 response.getOutputStream();
        
while
 ((len 
=
 br.read(buf)) 
>
 
0
)
            out.write(buf, 
0
, len);
        br.close();
        out.close();
    }
你可能感兴趣的文章
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>
Java8 HashMap集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
Android计算器实现源码分析
查看>>
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>