所以我正在尝试将一个文件从 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 shares
NtlmPasswordAuthentication 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:拒绝访问)的更多相关文章

  1. android – 使用Samba / JCIFS问题写入/上传文件(SmbAuthException:拒绝访问)

    BTW我的三星电视是基于Linux并使用samba客户端访问相同的共享文件夹没有问题并播放MP3从那里.由于我的AOS设备通过WiFi访问我的LAN,我还检查了使用笔记本电脑WiFi访问共享文件夹,发现没有问题.添加:我现在正在尝试执行以下行:并获得相同的访问被拒绝.我甚至都不想写文件……解决方法我的天啊!!!解决方案很简单!

  2. 如何减少CentOS服务器上的Samba CPU使用率?

    如果您有存储瓶颈,有时会出现cpu使用率过高的情况.我有一个繁忙的Samba文件服务器,可以在一个适度的双核cpu上同时使用30-50个Mac客户端.最大的因素是RAM.每次用户的数量或工作量增加时,我都会增加一些额外的RAM,并且大多数工具报告的cpu使用率大幅下降,响应度仍然很高.

  3. centos – 可以连接到Samba,但拒绝访问家庭

    我可以使用IP地址和服务器名称连接到samba服务器,我可以看到主文件夹名称,但无法连接到它smb.cnf/etc/samba文件夹中包含以下文件“sudopdbedit-L”的输出是ls-abl/data/localdevs/当我将访问权限拒绝给user1的主目录时,这些是samba日志显示的内容解决方案就是这样显然这是一个中心的事情.注意:语法为root(替换为您尝试共享的目录)

  4. CentOS上的Samba服务器看到共享目录,但没有可见的文件

    我有一个非常基本的samba共享用于开发环境.有一个目录/var/www/由www:www拥有.所有子目录也归www:www所有.所有用户都是www组的成员.除共享定义外,整个smb.conf文件是默认文件.我可以从windows中看到目录结构,但所有目录都显示为空.这个配置完全适用于FreeBSD.有任何想法吗?

  5. ubuntu – fstab中的CIFS挂载在IP上成功,在/ etc / hosts中写入的主机名失败

    –是DNS/WINS/其他一些硬编码到mount.cifs的解析方法吗?

  6. ubuntu – 针对samba 4的keytab身份验证:获取初始凭据时在Kerberos数据库中找不到客户端

    希望这有助于其他人尝试使用Samba4设置SSO…

  7. ubuntu – 尝试通过Samba重命名文件;如果文件名中有“2”则失败

    这似乎是一个奇怪的问题,希望有人可能会有所启发.我在几个ubuntu服务器上设置了一些samba文件夹,供用户进行一些文件管理.将文件移动到共享后,用户尝试通过samba从其WindowsXP计算机重命名该文件,但收到错误“您指定的文件名无效或太长.请指定其他文件名”.我检查了权限,并从Windows7搞砸了它,我遇到了同样的问题.最终我发现只要新名称不包含数字’2′,我就可以更改文件名.该文件的

  8. ubuntu – Samba:会话设置失败:NT_STATUS_LOGON_FAILURE

    安德鲁提到:sudosmbpasswd-a这个命令对我有用.在此之前我使用Webmin浏览samba用户,并在那里更改我的用户密码,它不起作用!

  9. ubuntu – 如何设置samba共享作为特定用户挂载?

    我想创建samba共享,用户可以将其作为特定的samba用户连接.我创建了用户,让我们说亨利,我想在家里存储.所以我在/etc/samba/smb.conf中:现在,当我通过smbclient连接时,一切都很好.但我想将此份额作为CIFS挂载.我可以:但是当我尝试在/media/remote-share中创建一个文件时,我得到了许可被拒绝:(如果我希望每个人都有访问权限,我应该如何配置它,但作为特

  10. 身份验证 – Ubuntu上的Samba NT_STATUS_ACCESS_DENIED错误

    事实证明,除了Unix用户名之外,我还需要使用以下命令添加Samba用户名:要查看已创建的用户,可以使用以下命令:

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部