java基于jcifs.smb实现远程发送文件到服务器

本文实例为大家分享了java实现远程发送文件到服务器的具体代码,供大家参考,具体内容如下

1.依赖的相关jar包         jcifs-1.3.14.1.jar
2.创建SMB的声明

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.UnknownHostException; 

import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream; 

public class SmbUtil {
  // 1. 声明属性
  private String url = "smb://userName:password@192.168.2.153/mars/";
  private SmbFile smbFile = null;
  private SmbFileOutputStream smbOut = null;
  private static SmbUtil smbUtil = null; // 共享文件协议 

  private SmbUtil(String url) {
    this.url = url;
    this.init();
  } 

  // 2. 得到SmbUtil和连接的方法
  public static synchronized SmbUtil getInstance(String url) {
    if (smbUtil == null)
      return new SmbUtil(url);
    return smbUtil;
  } 

  // 3.smbFile连接
  public void init() {
    try {
      System.out.println("开始连接...url:" + this.url);
      smbFile = new SmbFile(this.url);
      smbFile.connect();
      System.out.println("连接成功...url:" + this.url);
    } catch (MalformedURLException e) {
      e.printStackTrace();
      System.out.print(e);
    } catch (IOException e) {
      e.printStackTrace();
      System.out.print(e);
    }
  } 

  // 4.上传文件到服务器
  public int uploadFile(File file) {
    int flag = -1;
    BufferedInputStream bf = null;
    try {
      this.smbOut = new SmbFileOutputStream(this.url + "/"
          + file.getName(), false);
      bf = new BufferedInputStream(new FileInputStream(file));
      byte[] bt = new byte[8192];
      int n = bf.read(bt);
      while (n != -1) {
        this.smbOut.write(bt, 0, n);
        this.smbOut.flush();
        n = bf.read(bt);
      }
      flag = 0;
      System.out.println("文件传输结束...");
    } catch (SmbException e) {
      e.printStackTrace();
      System.out.println(e);
    } catch (MalformedURLException e) {
      e.printStackTrace();
      System.out.println(e);
    } catch (UnknownHostException e) {
      e.printStackTrace();
      System.out.println("找不到主机...url:" + this.url);
    } catch (IOException e) {
      e.printStackTrace();
      System.out.println(e);
    } finally {
      try {
        if (null != this.smbOut)
          this.smbOut.close();
        if (null != bf)
          bf.close();
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    } 

    return flag;
  } 

  // 5. 在main方法里面测试
  public static void main(String[] args) {
    // 服務器地址 格式為 smb://电脑用户名:电脑密码@电脑IP地址/IP共享的文件夹
    String remoteUrl = "smb://wangqinghua:wqh123@192.168.2.153/mars/";
    String localFile = "F:/开关生产销售企业名录.xls"; // 本地要上传的文件
    File file = new File(localFile);
    SmbUtil smb = SmbUtil.getInstance(remoteUrl);
    smb.uploadFile(file);// 上传文件
  }
} 

需要注意的事项:

以上是基于局域网,且上传文件的目录或者文件夹必须设置为共享模式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Java上传文件到服务器端的方法
  • Java上传文件图片到服务器的方法
  • 基于HTML5+js+Java实现单文件文件上传到服务器功能
  • Java实现图片上传到服务器并把上传的图片读取出来
  • Java使用SFTP上传文件到服务器的简单使用
  • java实现将文件上传到ftp服务器的方法
  • java基于servlet编写上传下载功能 类似文件服务器
  • Java编程实现服务器端支持断点续传的方法(可支持快车、迅雷)
  • Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法
  • JAVA技术实现上传下载文件到FTP服务器(完整)
(0)

相关推荐

  • Java上传文件到服务器端的方法

    Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传.如果不设置,enctype属性默认为application/x-www-form-urlencoded,使用浏览器将使用ASCII向服务器发送数据,导致发送文件失败. 上传文件要使用文件域(<input type='file'/>,并把FORM的Enctype设置为multipar

  • Java上传文件图片到服务器的方法

    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存,具体内容如下 首先是页面html的   我这是提交一个文件和类型 <div style="border: 1px solid red;"> 我是添加一张临时图片得到微信的media_id保存数据库! <form action="xxxxxxxxm" enctype="multipart/form-data" method="post">

  • java基于servlet编写上传下载功能 类似文件服务器

    本人闲来无事,写了个servlet,实现上传下载功能.启动服务后,可以在一个局域网内当一个小小的文件服务器. 一.准备工作 下载两个jar包: commons-fileupload-1.3.1.jar commons-io-2.2.jar 二.创建一个web工程 我的工程名叫:z-upload 三.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="ht

  • JAVA技术实现上传下载文件到FTP服务器(完整)

    具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

  • Java使用SFTP上传文件到服务器的简单使用

    最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询.具体代码如下所示: /** * 将文件上传到服务器 * * @param filePath * 文件路径 * @param channelSftp * channelSftp对象 * @return */ public static boolean uploadFile(String filePath, ChannelSftp channelSftp) { OutputStream outstream = null; In

  • java实现将文件上传到ftp服务器的方法

    本文实例讲述了java实现将文件上传到ftp服务器的方法.分享给大家供大家参考,具体如下: 工具类: package com.fz.common.util; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; imp

  • 基于HTML5+js+Java实现单文件文件上传到服务器功能

    上传单文件到服务器       应公司要求,在HTML5页面上实现上传文件到服务器,对于一个还没毕业的实习生菜鸟来说,这可不得了-----不会,网上各种百度,找各种博客还是没解决,最后还是请教了公司的大神,人家给卸了一个例子,然后根据人家写的终于把这个上传文件搞定. 好了,开始上代码. HTML5代码: <form name="upform" action="" method="POST"> <input type ="

  • Java编程实现服务器端支持断点续传的方法(可支持快车、迅雷)

    本文实例讲述了Java编程实现服务器端支持断点续传的方法.分享给大家供大家参考,具体如下: 大家知道Tomcat之流对静态资源可以实现断点续传支持,但是如果是一个被控制的流,如有权限控制,或下载地址仅是个代理的时候,这时候需要自己实现断点续传的支持,小弟不才,这里提供基本断点续传[a-,-b,a-b]的简单实现,经验证,可支持迅雷7和火狐的多次断点续传.现贴出代码,大家共同分享: Servlet import java.io.BufferedOutputStream; import java.i

  • Java实现图片上传到服务器并把上传的图片读取出来

    在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢? 下面说一下我的实现过程(只是个人实现思路,实际网站怎么实现的不太清楚) 实现的思路: 工具:MySQL,eclipse 首先,在MySQL中创建了两个表,一个t_user表,用来存放用户名,密码等个人信息, 一个t_touxiang表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID, T_touxiang表中的用户ID对应了t_user中的i

  • Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

    一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

随机推荐