gpt4 book ai didi

android - 使用 Samba/JCIFS 问题写入/上传文件 (SmbAuthException : Access is denied)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:47 41 4
gpt4 key购买 nike

所以我正在尝试将文件从 Android 设备写入 Windows 共享文件夹。我正在使用最新版本的 JCIFS 和 code which displays available network shares工作正常。所以我假设 JCIFS 和我的 LAN、WiFi 等一切正常。这是文件上传的代码(实际上我只想将文本 Sring 写入文件):

    public boolean save2Samba(String text, String fileName) {
try {

// My Windows shares doesn't require any login/password
// String name="login";//my windows username
// String password="password1";//my windows password

// sSambaFolder contains a path like MYPC/E/SharedFolderName/
String url = "smb://" + sSambaFolder.toLowerCase()+fileName;

SmbFile file = null;
try {
// assume ANONYMOUS is my case but there is no description of this in JCIFS API
NtlmPasswordAuthentication auth = NtlmPasswordAuthentication.ANONYMOUS;
file = new SmbFile(url, auth);
android.util.Log.i("TestApp",url);
// output is like smb://mypc/e/sharedfoldername/file.txt;
SmbFileOutputStream out = new SmbFileOutputStream(file);
out.write(text.getBytes());
out.flush();
out.close();

} catch (Exception e) {
e.printStackTrace();
return false;
}

return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

由于 url 已记录,我确定它是正确的(我还使用上面提到的代码检查了 url 并浏览了文件夹的包含)。
但问题是我总是得到相同的:

W/System.err(3214): jcifs.smb.SmbAuthException: Access is denied.

共享不受密码保护,因此我不需要任何用户名/密码即可访问。我可以从另一台 WinPC 读取/写入/删除文件,并且不需要授权。我还尝试使用共享为 WinPC 上的用户创建密码,但结果是一样的。所以我尝试了几个版本的 NtlmPasswordAuthentication 但没有成功:

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(":");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("Administrator:"); //actual username on WinPC with shares
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("Administrator");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"Administrator","");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"","");

那么我做错了什么以及如何在不需要身份验证即可访问共享文件夹的情况下实现我的目标?
顺便说一句,我的基于 linux 并使用 samba 客户端的三星电视正在访问同一个共享文件夹文件夹并从那里播放 MP3(好吧,是的,它只读)。由于我的 AOS 设备通过 WiFi(而不是通过以太网连接的电视)访问我的 LAN,我还检查了使用笔记本+WiFi 访问共享文件夹,没有发现任何问题。
添加:
我现在正在尝试执行以下几行:

file = new SmbFile(url, auth);
android.util.Log.i("save2Samba", "file.exists(): " + file.exists());

并得到相同的访问被拒绝。我什至不想写文件...

最佳答案

我的天啊!!!解决方案非常简单!!!访问不受登录/密码保护因此不需要任何授权的网络不是 NtlmPasswordAuthentication.ANONYMOUS 但它是:

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, null, null);

该死的没那么明显!

关于android - 使用 Samba/JCIFS 问题写入/上传文件 (SmbAuthException : Access is denied),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14559019/

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