所以我试着从android设备写一个文件到windows共享文件夹。我使用的是最新版本的JCIFS和代码,显示可用的网络共享工作良好。所以我假设JCIFS和我的LAN、WiFi等都没问题。这里是文件上传的代码(实际上我只想写一个文本到文件中):
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,它会浏览文件夹的包含)。
但问题是Im总是得到相同的:
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被要求访问共享文件夹时,如何实现我的目标?
顺便说一句,我的三星电视是基于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);
该死的没那么明显!
问题内容: 我有一个关于使用Samba JCIFS访问文件的问题。因此,有一个我要访问的服务器,我们将其称为server.unv.edu,工作组为WKGRP。此服务器中有一个共享:\\ server.unv.edu \ pcb $ 我尝试访问服务器的方式是: 和 但这不起作用。我得到了一个错误 任何人都可以给我建议或代码的正确性,以帮助我访问文件吗? 非常感谢。 问题答案: 您正在使它比应有的难度
我正在编写一个android应用程序来使用JCIFS samba库访问windows共享,但是我收到新SmbFile(path,auth)上的
我正在使用JCIFS写入windows共享。这一直很有效。它突然停止工作,现在得到一个jcifs.smb.smbauthException:访问被拒绝。例外。我知道我的凭据很好,因为我可以使用smb手动连接并写入文件夹,所以这不是问题。我使用的代码是: 它在“SmbFileOutputStream outputStream=new SmbFileOutputStream(file)”行上爆炸。几个
问题内容: 我在FoxPro 6.0命令窗口中使用SQL命令,并遇到“文件访问被拒绝”。 我的SQL命令是: 情况: Windows 7专业版 FoxPro 6.0 main.dbf被共享给许多用户。 main.dbf不是 隐藏的 ,也不是 只写 任何意见将不胜感激! 问题答案: 此DBF文件位于共享驱动器上吗?如果是这样,则另一个用户可能使文件打开了“排他”,或者您正试图打开文件“排他”。默认状
我已经使用这个库angular2文件上传https://github.com/valor-software/ng2-file-upload 现在我上传文件时收到此错误 无法加载XMLHttpRequesthttp://localhost:8080/files.对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为“include”时,响应中“access control Allow Origin
问题内容: 我在使它工作时遇到问题。它接收一个字符串,其中包含几条信息。但是,当我尝试将String写入文件以跟踪程序随时间的变化时,我收到拒绝访问错误: 叠层纱 完整的堆栈跟踪: 58行: 问题答案: 您必须先创建文件夹。但是您不能调用file.mkdirs()-您需要调用file.getParentFile()。mkdirs()-否则,您将使用文件名创建一个文件夹(这将阻止您使用以下命令创建文