zoukankan      html  css  js  c++  java
  • JAVA实现上传下载共享文件

    1、上传下载共享文件需要用到jcifs,先下载相关JAR包(开源项目的源码,demo,文挡、API应有尽有)

    https://jcifs.samba.org/src/

    2、创建共享目录,确定访问用户及密码(用户需要写入权限)

    String url_share_key = "192.16.20.15"; //共享IP
    String url_share_user = "administrator"; //共享用户 需要有写入权限
    String url_share_pwd = "123456"; //密码
    String dir_share_key = "192.16.20.15/test/"; //共享根路径

    3、用户凭证,用户凭证还可以通过远程路径传递(smb://用户名:密码@192.168.0.11/test )

    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(url_share_key, url_share_user, url_share_pwd); 

    4、上传

     1    /**
     2      * 从本地上传文件到共享目录
     3      * @param remoteUrl 远程路径
     4      * @param localFilePath 本地路径
     5      * @param auth 用户凭证
     6      */
     7     public static void smbPut(String remoteUrl, String localFilePath,NtlmPasswordAuthentication auth) {
     8         InputStream in = null;
     9         OutputStream out = null;
    10         try {
    11             // 需要上传的文件 取出文件名称
    12             File localFile = new File(localFilePath);
    13             String fileName = localFile.getName();
    14 
    15             // 共享目录 不存在则创建
    16             SmbFile remoteFileDir = new SmbFile(remoteUrl, auth);
    17             if (!remoteFileDir.isDirectory()) {
    18                 remoteFileDir.mkdirs();
    19             }
    20 
    21             // 上传
    22             SmbFile remoteFile = new SmbFile(remoteUrl + File.separator
    23                     + fileName, auth);
    24             in = new BufferedInputStream(new FileInputStream(localFile));
    25             out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
    26 
    27             // 缓冲数组
    28             byte[] b = new byte[1024 * 5];
    29             int len;
    30             while ((len = in.read(b)) != -1) {
    31                 out.write(b, 0, len);
    32             }
    33             // 刷新此缓冲的输出流
    34             out.flush();
    35         } catch (Exception e) {
    36             e.printStackTrace();
    37         } finally {
    38             try {
    39                 out.close();
    40                 in.close();
    41             } catch (IOException e) {
    42                 e.printStackTrace();
    43             }
    44         }
    45     }

    5、下载

     1   /**
     2      * 从共享目录拷贝文件到本地
     3      * @param remoteUrl 远程路径
     4      * @param localDir 本地路经
     5      * @param auth
     6      */
     7     public static void smbGet(String remoteUrl, String localDir,NtlmPasswordAuthentication auth) {
     8         InputStream in = null;
     9         OutputStream out = null;
    10         try {
    11             //远程文件
    12             SmbFile remoteFile = new SmbFile(remoteUrl,auth);
    13             if (remoteFile == null) {
    14                 System.out.println("共享文件不存在");
    15                 return;
    16             }
    17             
    18             //创建本地文件并写入
    19             String fileName = remoteFile.getName();
    20             File localFile = new File(localDir + File.separator + fileName);
    21             in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
    22             out = new BufferedOutputStream(new FileOutputStream(localFile));
    23             byte[] buffer = new byte[1024];
    24             while (in.read(buffer) != -1) {
    25                 out.write(buffer);
    26                 buffer = new byte[1024];
    27             }
    28         } catch (Exception e) {
    29             e.printStackTrace();
    30         } finally {
    31             try {
    32                 out.close();
    33                 in.close();
    34             } catch (IOException e) {
    35                 e.printStackTrace();
    36             }
    37         }
    38     }
  • 相关阅读:
    读javascript高级程序设计08-引用类型之Global、Math、String
    读javascript高级程序设计07-引用类型、Object、Array
    读javascript高级程序设计06-面向对象之继承
    读javascript高级程序设计05-面向对象之创建对象
    读javascript高级程序设计04-canvas
    读javascript高级程序设计03-函数表达式、闭包、私有变量
    读javascript高级程序设计02-变量作用域
    C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
    【转】 C#中Finally的一个不太常见的用法
    一看就懂的ReactJs入门教程-精华版
  • 原文地址:https://www.cnblogs.com/Nadim/p/4800859.html
Copyright © 2011-2022 走看看