android – 使用SambaJCIFS问题写入上传文件(SmbAuthException:拒绝访问)

android – 使用SambaJCIFS问题写入上传文件(SmbAuthException:拒绝访问),第1张

概述所以我正在尝试将一个文件从 android设备写入windows共享文件夹.我正在使用最新版本的JCIFS和 code which displays available network shares工作正常.所以我假设JCIFS和我的局域网,WiFi等一切正常.这是文件上传的代码(实际上我只是想写一个文件Sring to a File): public boolean save2Samba(Str 所以我正在尝试将一个文件从 android设备写入windows共享文件夹.我正在使用最新版本的JCIFS和 code which displays available network shares工作正常.所以我假设JCIFS和我的局域网,WiFi等一切正常.这是文件上传的代码(实际上我只是想写一个文件Sring to a file):
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;        }    }

由于记录了网址,我确定它是正确的(我也使用上面提到的代码检查了网址并浏览了文件夹的内容).
但问题是我总是这样:

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 sharesNtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("administrator");NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"administrator","");NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"","");

那么我做错了什么以及如何在没有auth时实现我的目标需要访问共享文件夹?BTW我的三星电视是基于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:拒绝访问)全部内容,希望文章能够帮你解决android – 使用Samba / JCIFS问题写入/上传文件(SmbAuthException:拒绝访问)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1137447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存