当前位置: 首页 > 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.gsyq.cn/news/1611624.html

相关文章:

  • 北斗赋能海洋精准定位
  • 【JAVA毕设源码分享】基于springboot大学生社交平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 快速部署:三步搞定前后端启动
  • VisualCppRedist AIO:Windows运行库一体化管理的工程化解决方案
  • 计算机视觉实战指南:目标检测、图像分割与识别从入门到部署
  • 国家中小学智慧教育平台电子课本下载工具:解决教师学生离线学习难题
  • 【Ambari Plus】04.HDFS 安装
  • 大模型技术之深度学习
  • AI Agent 新概念: Loop Engineering 是什么? 一篇文章讲清楚定义、组成、应用场景
  • Redis缓存实战:彻底解决缓存穿透、击穿、雪崩三大难题
  • 整群随机抽样
  • 2026 年本地部署的 AI 数字人直播系统到底有多省钱?
  • 从Prompt到Loop,拆解Agent 进化的底层逻辑
  • 北京心商科技发布GEO优化产品 助力企业合规营销
  • 开源模型技术总结-3————FireRed(小红书)开源模型
  • 主流三维光学轮廓仪国产品牌与技术解析
  • 】[SampleVirtualTexture节点]原理解析与实际应用
  • 操作简便吗?8款AI写作辅助网站综合榜,毕业答辩稳了!
  • 2026 在上海如何找一家专业又靠谱的小程序定制开发公司
  • 告别命令行!用JGit在Java项目里优雅地操作Git(附完整API使用示例)
  • 2026最新年版Java八股文,7天背完通过面试
  • 机器人电源方案评审清单:别只看电压电流,还要看这 6 件事
  • 2026年本地部署的AI数字人直播系统 Top5 实测
  • ArkUI 底部操作栏及卡片整体美化布局开发
  • 从“工作记忆”到“资源博弈”:AI Agent 的 Context Window 为何是最核心的工程约束?
  • 垃圾自动分类技术:从AI识别到机械分拣的工程实践与选型指南
  • 20260630 - 看门狗
  • Go语言面试遇到,面试官问什么是协程、什么是协程泄漏和数组跟切片是用该如何回答
  • Agent Skill 学习笔记
  • 基于.NET AgentFramework开发OpenClaw智能体框架