当前位置: 首页 > news >正文

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

技术选型

组件说明
协议SMBv2 / SMBv3(推荐,安全性更高)
Java 库jcifs-ng(JCIFS 的活跃维护分支,支持现代 SMB 协议)
认证方式NTLM(Windows 域或本地账户)
开发语言Java 8+

1.2前提条件

✅ 前提条件(必须满足)

在目标服务器173.16.1.152上:

  1. 已共享D:\jenkins文件夹(这里改成你需要访问的共享目录
    • 共享名建议为jenkins→ 访问路径:\\173.16.1.152\jenkins目录名称改成自己相应即可
  2. 你有一个有写权限的 Windows 账户(如admin/deploy
  3. 防火墙允许 445 端口(默认 SMB 端口)
  4. “密码保护的共享”已关闭(或你知道正确凭据)

💡 测试:在winds服务器上按Win+R,输入
\\173.16.1.152\jenkins
看是否能打开并写入文件。

2、代码实现

代码执行流程示意图:

2.1、添加依赖

<dependency> <groupId>eu.agno3.jcifs</groupId> <artifactId>jcifs-ng</artifactId> <version>2.1.9</version> <!-- 请使用最新稳定版 --> </dependency>

2.2 提供接口核心代码

这部分主要是提供接口,和有些参数校验

@ApiOperation("只下载目录下的 .hex 文件并下载") @PostMapping("/getJenkinsHexData") public R<String> 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("文件下载失败"); }
http://www.cnnetsun.cn/news/3076018.html

相关文章:

  • OpenGL学习笔记-05-着色器-数据类型/输入输出/uniform
  • 基于OpenCV与YOLO的实时目标检测系统搭建指南
  • Docker部署PostgreSQL
  • Playwright混沌工程实战:构建AI增强的韧性Web自动化测试体系
  • 【LeetCode】反转字符串
  • 京东开源实时视频视觉语言交互模型:全栈方案解析与落地实践
  • 智能体颠覆安全-360图龙锋如何用蜂群路线打造中国版Mythos
  • Java 26 发布了, 我人麻了。。
  • 玩三角洲要高配?2026年这5款旗舰游戏本让你杀穿新赛季
  • AI模型门控发布机制解析:原理、实践与行业应用
  • 2026全球EMBA客观测评:科学选型与优质项目解析
  • 工程师转型AI:从跑通Demo到收藏实战秘籍,拒绝高数劝退!
  • 微信聊天记录备份终极指南:如何安全保护你的数字记忆
  • UMDF驱动开发入门:二 详解INF文件与设备类选择
  • 软件测试——黑盒测试
  • AI Agent 三种记忆的工程落地
  • 网络安全事件报告——伪CAPTCHA诱骗用户运行危险的PowerShell脚本
  • 小白可懂的保姆级 Redis 教程
  • ponytail爆火:专治AI编程过度造轮子,代码直接砍半
  • 解密 MCP:开启 AI 与数据交互的新标准
  • 新课标下,小学数学最需要的能力不是“算得快“,而是“想得通“
  • 深入认识ClassLoader - 一次投产失败的复盘
  • DeepSeek美化-为 DeepSeek 网页版引入 Obsidian Border 主题视觉风格
  • RAG基础
  • 做智驾十年,为何Momenta上市换锚?
  • 企业DLP选型指南:从入门到决策,一篇讲透
  • PEAK框架:自然语言驱动的GPU内核优化技术解析
  • Lyra框架:RISC-V处理器验证的异构加速与语义生成技术
  • 郑州翻译公司 俄语保险翻译清单
  • 模板题这道模板题非常全面,相比应用李超线段树的时候实现的东西要多的多: