当前位置: 首页 > 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.jsqmd.com/news/1099662/

相关文章:

  • 关于 Vaadin:专为企业级应用打造的 Java Web UI 框架
  • 8元现金优惠券,无门槛直接使用
  • 剪映专业版教程:制作照片旋转轮播效果
  • 专访零数科技林乐:他为何坚信“数据利用”比“数据流通”更接近数字经济的本质?
  • 北斗赋能海洋精准定位
  • 开源WPS AI插件察元AI文档助手:updateTask 与终结状态的时间戳
  • 纳米级重复精度国产三维轮廓仪性价比之选
  • 【JAVA毕设源码分享】基于springboot大学生社交平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 快速部署:三步搞定前后端启动
  • 2.3 内核层:时钟信号与硬件保护电路
  • 还在为文献综述发愁?9个斯坦福博士级提示词,让导师拍案叫绝的全局思维
  • VisualCppRedist AIO:Windows运行库一体化管理的工程化解决方案
  • AMD Ryzen深度调试完全指南:解锁处理器隐藏潜力的终极工具
  • Playwright混沌工程实战:构建AI增强的韧性Web自动化测试体系
  • 开关电源输出过冲问题
  • 国家中小学智慧教育平台电子课本下载工具:解决教师学生离线学习难题
  • 计算机视觉实战指南:目标检测、图像分割与识别从入门到部署
  • 【Ambari Plus】04.HDFS 安装
  • 以社区登录为例,对接社区如微信登录后,在keycloak登录页点微信按钮,
  • 新手用AI写长篇小说全流程教学,深度使用指南(附提示词)
  • ESP32 + 传感器:手把手教你做土壤监测终端
  • Windows本地实时语音转文字:TMSpeech让你的电脑变身智能会议助手
  • 大模型技术之深度学习
  • Java 26 发布了, 我人麻了。。
  • AI Agent 新概念: Loop Engineering 是什么? 一篇文章讲清楚定义、组成、应用场景
  • Redis缓存实战:彻底解决缓存穿透、击穿、雪崩三大难题
  • 软件工程从业所需的技能:正确认识行业,并走出可持续的职业生涯
  • 整群随机抽样
  • 可视化学科发展脉络浅梳(学习笔记)
  • 京东开源实时视频视觉语言交互模型:全栈方案解析与落地实践