批量处理远程共享目录中的特定类型文件(如 .hex、.csv 等)。

批量处理远程共享目录中的特定类型文件(如 .hex、.csv 等)。
技术选型组件说明协议SMBv2 / SMBv3推荐安全性更高Java 库jcifs-ngJCIFS 的活跃维护分支支持现代 SMB 协议认证方式NTLMWindows 域或本地账户开发语言Java 81.2前提条件✅ 前提条件必须满足在目标服务器173.16.1.152上已共享D:\jenkins文件夹这里改成你需要访问的共享目录共享名建议为jenkins→ 访问路径\\173.16.1.152\jenkins目录名称改成自己相应即可你有一个有写权限的 Windows 账户如admin/deploy防火墙允许 445 端口默认 SMB 端口“密码保护的共享”已关闭或你知道正确凭据 测试在winds服务器上按WinR输入\\173.16.1.152\jenkins看是否能打开并写入文件。2、代码实现代码执行流程示意图2.1、添加依赖dependency groupIdeu.agno3.jcifs/groupId artifactIdjcifs-ng/artifactId version2.1.9/version !-- 请使用最新稳定版 -- /dependency2.2 提供接口核心代码这部分主要是提供接口和有些参数校验ApiOperation(只下载目录下的 .hex 文件并下载) PostMapping(/getJenkinsHexData) public RString downloadSmbHexFiles(RequestBody SmbDownloadRequestVo request) { // 1. 路径安全检查防止路径遍历 if (request.getLocalBaseDir() ! null (request.getLocalBaseDir().contains(..) || request.getLocalBaseDir().contains(/))) { throw new UserException(无效的本地基础目录路径); } // // 2. 从环境变量获取密码生产环境必须 // String safePassword System.getenv(SMB_PASSWORD); // if (safePassword null) { // throw new UserException(未设置SMB_PASSWORD环境变量); // } // 3. 验证请求参数 if (request.getSmbHost() null || request.getShareName() null || request.getUsername() null) { throw new UserException(缺少必需参数smbHost、shareName、username); } try { // 4. 使用安全密码执行下载 WindowsDownloaderHexFile.downloadHexFiles( request.getSmbHost(), request.getShareName(), request.getRemotePath(), request.getUsername(), request.getPassword(), request.getLocalBaseDir(), true, request.getFileExtension() ); return R.ok(文件下载成功); } catch (Exception e) { return R.fail(文件下载失败); }