gpt4 book ai didi

JAVA实现下载文件功能的两种方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章JAVA实现下载文件功能的两种方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

第一种方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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();
   }
  }

第二种方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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();
  }

以上就是JAVA实现下载文件功能的两种方法的详细内容,更多关于JAVA实现下载文件的资料请关注我其它相关文章! 。

原文链接:https://www.cnblogs.com/xiaoyue1606bj/p/10985764.html 。

最后此篇关于JAVA实现下载文件功能的两种方法的文章就讲到这里了,如果你想了解更多关于JAVA实现下载文件功能的两种方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com