簡體   English   中英

JCIFS-通過SMB傳輸文件

[英]JCIFS - Transfer a file via SMB

我正在嘗試使用jcifs SMB將一些文件從存儲的目錄移動到遠程服務器“ BOB”。 我需要使用jcifs,因為該移動來自Android應用程序,即IE,我正在將照片從該應用程序移動到遠程服務器。 為了進行用戶身份驗證,我公司使用Active Directory。 一段時間以來,Active Directory與用於存儲照片的服務器是同一台服務器,一切都很好。 不幸的是,他們不得不將Active Directory的存儲服務器更改為“ RAINY”,而不是將照片的存儲服務器更改為“ 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();

也許您可以發布一些有關網絡捕獲的詳細信息,我可以為您提供幫助。 有一些新的SMB Java項目支持SMB2及更高版本,我想您可以嘗試一下。

  • smbj- https ://github.com/hierynomus/smbj-(Apache v2許可證)
  • jNQ- http ://visualitynq.com/products/jnq-java-smb-client(商業許可證)

您從哪里獲得“ SmbSession.logon()”?

如果您正在談論進行krb5樣式的登錄,則JCIFS不支持Kerberos。 您將無法執行此操作,因為Android尚未加入該域(或者Android可以,我不知道)。

無論如何,您必須僅使用純文本憑據。 更具體地說,使用您的域/用戶名/密碼創建一個NtlmPasswordAuthentication對象,並將其傳遞給SmbFile(或者最好是SmbFileOutputStream-請參見examples / Put.java)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM