spring boot 连接FTP实现文件上传
spring boot 连接FTP实现文件上传
maven:
<!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency>
接口示例:
@ApiOperation(value="上传文件到FTP")@PostMapping("/fileUploadFTP")public Boolean uploadFileToFtp(@RequestParam("file") MultipartFile file) {boolean flag = uploadFile("192.168.2.128",21,file,"user","123456","/");return false;}
方法:
public static boolean uploadFile(String url, int port, MultipartFile file,String username,String password, String path) {FTPClient ftpClient = new FTPClient();boolean result = false;try {String filename = file.getOriginalFilename();// 连接到FTP服务器ftpClient.connect(url, port);// 登录boolean login = ftpClient.login(username, password);if (!login) {System.out.println("FTP 登录失败");return result;}// 设置控制编码(处理中文文件名)ftpClient.setControlEncoding("UTF-8");// 检查是否成功连接int replyCode = ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(replyCode)) {System.out.println("连接失败,FTP 服务器返回错误:" + replyCode);return result;}// 切换到指定的目录boolean changeDir = ftpClient.changeWorkingDirectory(path);if (!changeDir) {System.out.println("目标目录不存在或没有权限:" + path);// 尝试创建目标目录if (ftpClient.makeDirectory(path)) {System.out.println("创建目录成功:" + path);} else {System.out.println("无法创建目录:" + path);return false;}}// 设置文件类型(二进制文件类型,适用于所有类型的文件)ftpClient.setFileType(FTP.BINARY_FILE_TYPE);try (InputStream fis = file.getInputStream()) {// 上传文件String encodedFilename = new String(filename.getBytes("UTF-8"), "ISO-8859-1");result = ftpClient.storeFile(encodedFilename, fis);if (result) {System.out.println("文件上传成功!");} else {replyCode = ftpClient.getReplyCode();String replyMessage = ftpClient.getReplyString();System.out.println("上传失败,FTP 回复: " + replyCode + " " + replyMessage);}}// 退出ftpClient.logout();} catch (IOException e) {e.printStackTrace();} finally {try {// 断开与服务器的连接if (ftpClient.isConnected()) {ftpClient.disconnect();}} catch (IOException e) {e.printStackTrace();}}return result;}
相关文章:
spring boot 连接FTP实现文件上传
spring boot 连接FTP实现文件上传 maven: <!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency>接口示例: ApiO…...
怎么进行mysql的优化?
MySQL 的优化是一个系统性的工作,涉及多个层面,包括查询优化、索引优化、配置优化、架构优化等。以下是一些常见的 MySQL 优化方法: 查询优化 避免全表扫描:确保查询能够使用索引,避免 SELECT *,只选择需要…...
Octave3D 关卡设计插件
课程参考链接 这位大佬有在视频合集中有详细的讲解,个人体验过,感觉功能很强大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab资源管理 第一步 在场景中创建一个空物体…...
【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合
Frequency-aware Feature Fusion for Dense Image Prediction 用于密集图像预测的频率感知特征融合 Abstract:密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点,现代分层模型通常利用特征融合,直接添加…...
DeepBI成单关键词管理策略:提升转化与曝光,助力电商业绩双增长
在电商竞争愈发激烈的市场环境中,优化广告投放的关键词管理是提升产品转化率和曝光量的关键。特别是对于那些已经证明其转化能力的成单关键词,如何更好地管理和优化,成为了卖家们亟需解决的问题。DeepBI通过一套智能化的管理方案,…...
ai-3、机器学习之逻辑回归
机器学习之逻辑回归 1、分类问题2、逻辑回归2.1、二分类问题线性回归2.2、二分类问题逻辑回归 1、分类问题 分类问题常用的算法:逻辑回归 y0 :垃圾邮件 y1:正常邮件 准确来说是分类任务与线性回归任务的区别 2、逻辑回归 2.1、二分类问题线性回归 分类…...
在kubernetes集群中持续压测 SpringCloud 应用,pod 的 memory cache 持续增长问题
问题描述 在kubernetes集群中压测 SpringCloud 应用,持续压测, pod 的 memory cache 持续增长,导致 pod 最终挂了。上图看看效果吧~pod的资源配置 cpu: 1~2 core内存:1~3 G pod 数:1分析思路 1)pod 级的 Memory Cache ,显示的为当前 pod 的 linux 系统的 cache 内存的…...
金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”
在浙江绍兴,纺织业作为一张熠熠生辉的产业名片,承载着深厚的历史底蕴与蓬勃的发展活力。这里依傍长三角经济圈,交通网络纵横交错,将原材料产地与广阔市场紧密相连;产业集群高度成熟,上下游产业链完备&#…...
ubuntu:换源安装docker-ce和docker-compose
更新apt源 apt换源:ubuntu:更新阿里云apt源-CSDN博客 安装docker-ce 1、更新软件源 sudo apt update2、安装基本软件 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y3、指定使用阿里云镜像 su…...
基于 Elasticsearch 和 Milvus 的 RAG 运维知识库的架构设计和部署落地实现指南
最近在整理一些业务场景的架构设计和部署落地实现指南 先放一个 【基于RAG的运维知识库 (ElasticSearch + Milvus) 的详细实现指南】,其中包含了详尽的技术实现细节、可运行的示例代码、原理分析、优缺点分析和应用场景分析。 架构描述: 基于RAG的运维知识库 (ElasticSearch…...
基于Python的web漏洞挖掘,漏洞扫描系统(附源码,部署)
本次技术通过利用Python技术来开发一款针对web漏洞挖掘扫描的技术,通过web漏洞的挖掘扫描来实现对网站URL的漏洞检测,通过高中低风险的判断来实现对一款网站中存在的漏洞进行可视化的分析,从而能够找到问题并且尽快的实现问题的解决。 博主介…...
Spring Boot全局异常处理:“危机公关”团队
目录 一、全局异常处理的作用二、Spring Boot 实现全局异常处理(附上代码实例)三、总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢…...
Wireshark:自定义类型帧解析
文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧,仔细分析相关代码和数据帧后,…...
Redis7——进阶篇(一)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
word转换为pdf后图片失真解决办法、高质量PDF转换方法
1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker (1)点击word选项卡上的Acrobat插件,(2)点击“首选项”按钮,(3)点击“高级配置”按钮(4)点…...
Kafka零拷贝
Kafka为什么适用零拷贝,其他存储结构不适用? Kafka 采用的是日志存储模型,数据通常是顺序写入、顺序读取,并且它的消费模式是 “读完即走”(一次性读取并发送给消费者),这与零拷贝的特性完美匹…...
鸿蒙应用开发入门教程
鸿蒙应用开发入门教程 基础准备与环境搭建 1. 了解鸿蒙系统 1.1 核心理念学习 HarmonyOS(鸿蒙系统)是华为推出的全场景分布式操作系统,其核心特点如下: 分布式能力 设备协同:手机、平板、智能手表、IoT设备等可无…...
【2022——暴力DP / 优雅背包】
题目 代码 #include <bits/stdc.h> using namespace std; using ll long long;const int N 2023;ll f[2][2023][2023];int main() {f[0][0][0] 1;for(int i 1; i < 10; i) //次数{for(int j 0; j< 2022; j)for(int k 0; k < 2022; k)f[i&1][j][k] 0…...
AI智能体与大语言模型:重塑SaaS系统的未来航向
在数字化转型的浪潮中,软件即服务(SaaS)系统一直是企业提升效率、优化业务流程的重要工具。随着AI智能体和大语言模型(LLMs)的迅速发展,SaaS系统正迎来前所未有的变革契机。本文将从AI智能体和大语言模型对…...
绕过密码卸载360终端安全管理系统
一不小心在电脑上安装了360终端安全管理系统,就会发现没有密码,就无法退出无法卸载360,很容易成为一个心病,360终端安全管理系统,没有密码,进程无法退出,软件无法卸载,前不久听同事说…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
