当前位置: 首页 > 知识库问答 >
问题:

JCIFS-通过SMB传输文件

严心水
2023-03-14

我试图移动一些文件从存储目录到远程服务器"BOB"使用jcifs SMB.我需要使用jcifs,因为移动通过和Android应用程序,即。我正在将照片从应用程序移动到远程服务器。为了验证为用户,我的公司使用Active Directory。有一段时间,Active Directory和照片所在的服务器是同一个服务器,一切都很好。不幸的是,他们不得不将存储Active Directory的服务器更改为“RAINY”,但没有更改存储照片的服务器。所以,我需要将这些照片发送到“BOB”,但使用“RAINY”作为域控制器登录。尽管我尽了最大努力,我还是得到了一个错误“没有登录服务器可用于服务登录请求”当它碰到“SMBFileOutputStream”代码行时,它会返回此错误。

// Logon first.
UniAddress domainController = UniAddress.getByName("10.1.0.7");
SmbSession.logon(domainController, auth);

File moveMe = pics[k];
String cakeFolder = cupCakes[i].getName();
String transFolder = transfers[j].getName();
String destination = "smb://10.1.0.54/shared/Photos/Cupcakes/" +   cakeFolder + "/" + transFolder + "/" + moveMe.getName();

smbDest = new SmbFile(destination, auth);
SmbFileOutputStream out = new SmbFileOutputStream(smbDest);
FileInputStream fis = new FileInputStream(moveMe);
out.write(IOUtils.toByteArray(fis));
out.close();

共有1个答案

闻人博
2023-03-14

你从哪里得到“SmbSession.logon()”?

如果您正在谈论使用krb5风格的登录,那么JCIFS不支持Kerberos。你无论如何也不能这么做,因为Android没有加入域名(或者Android可以,我不知道)。

无论如何,您必须简单地使用明文凭据。更具体地说,用您的域/用户名/密码创建一个NtlmPassword身份验证对象,并将其传递给SmbFile(或者可能是SmbFileOutputStream会更好——参见示例/Put.java)。

 类似资料:
  • 此外,如果我可以动态地改变它,那么我需要这样做的迹象是什么?任何特定的异常或场景指出需要或? 谢了!

  • 我使用JCIFS SMB上传SMB文件时遇到性能问题。问题与属性并使用修复了该问题。 现在的问题是,在这种情况下,我将在使用因为它对我来说必须是静态属性?我有许多使用相同配置的不同环境。 属性文档(链接)说: 如果此属性为true,则将禁用基于域的DFS引用。默认值为false。此属性在非域环境中可能很重要,在非域环境中,通常在JCIFS首次尝试解析路径时运行的基于域的DFS引用将超时,从而导致长

  • 我目前正在使用jcifs-ngJava库来访问SMB驱动器,我知道它支持各种SMB版本。我还知道如何设置支持的最小和最大版本。但是出于调试的目的,我想知道当我从服务器获取目录信息时,哪个版本实际上正在使用(也就是说,服务器和我的客户端已经协商好了)。有人知道如何以编程方式做到这一点吗?

  • 试图从jcifs转移到jcifs-ng(最新的jar jcifs-ng-2.1.2.jar)以将文件复制到/从远程。我使用旧JCIFS的代码: 在stackoverflow中找到的示例很少,但看起来它们已经过时了。

  • 使用JCIFS可以轻松地检查文件是否存在: 设置凭据:

  • 问题内容: 如何在Java中通过SFTP传输文件? 我想要SFTP客户端的示例代码。我想将SFTP服务器嵌入到我的应用程序中,并且客户端应该能够将文件发送到我的应用程序。 PS:这是要求SFTP客户端。这个问题不是其他两个问题的重复。 找到以下链接以实现SFTP。 https://codetransient.wordpress.com/2019/06/22/sftp-secured-file-tr