Java上传文件到Windows共享目录问题
smpj上传到Windows共享目录一直失败,报STATUS_ACCESS_DENIED(0xc000022)。在GitHub上看错误码是服务器上报的,查看errortable是给到权限与服务器要求的权限不一致。openFile的第二个参数设置为添加文件和写文件即可(之前是全集操作GENERIC_ALL)。
File f = share.openFile(fileName, new HashSet(Arrays.asList(new AccessMask[]
{ AccessMask.FILE_ADD_FILE, AccessMask.FILE_WRITE_DATA })), fileAttributes, SMB2ShareAccess.ALL,
SMB2CreateDisposition.FILE_CREATE, createOptions);
原
文章:
https://www.soinside.com/question/e8TfG5dv4aV6xwWirYkR55
SMBClient client = new SMBClient();
try (Connection connection = client.connect(serverName)) {
AuthenticationContext ac = new AuthenticationContext(username, password.toCharArray(), domain);
Session session = connection.authenticate(ac);
// Connect to Share try (DiskShare share = (DiskShare) session.connectShare(sharename)) { for (FileIdBothDirectoryInformation f : share.list(folderName, "*.*")) { System.out.println("File : " + f.getFileName()); } //share.openFile(path, accessMask, attributes, shareAccesses, createDisposition, createOptions) Set<FileAttributes> fileAttributes = new HashSet<>(); fileAttributes.add(FileAttributes.FILE_ATTRIBUTE_NORMAL); Set<SMB2CreateOptions> createOptions = new HashSet<>(); createOptions.add(SMB2CreateOptions.FILE_RANDOM_ACCESS); File f = share.openFile(folderName+"\\"+fileName, new HashSet(Arrays.asList(new AccessMask[]{AccessMask.GENERIC_ALL})), fileAttributes, SMB2ShareAccess.ALL, SMB2CreateDisposition.FILE_OVERWRITE, createOptions); OutputStream oStream = f.getOutputStream(); oStream.write(fileContents.getBytes()); oStream.flush(); oStream.close(); }
讯享网
} catch (IOException e) {
e.printStackTrace();
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33033.html