Java实现FTP上传到服务器
作者:HSBhuang 发布时间:2022-10-07 10:28:58
标签:Java,FTP,服务器
简介
FTP是TCP/IP协议组中的协议之一,包括两个组成部分,一是FTP服务端,二是FTP客户端,其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
实例
下面利用Java实现FTP上传图片到远程服务器实例:
1、依赖jar包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
2、FtpUtil用来封装上传文件的工具类
public class FtpUtil {
public static void UploadImageByInputStream(InputStream is,String imageName) throws IOException {
//创建ftp客户端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK");
String hostname = "127.0.0.1";//服务器地址
int port = 21;//ftp端口
String username = "vftp";//ftp用户名
String password = "****";//密码
//连接ftp服务器
ftpClient.connect(hostname, port);
//登陆ftp
ftpClient.login(username, password);
int reply = ftpClient.getReplyCode();
System.out.println(reply);
//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return;
}
//设置文件类型(二进制)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//设置被动模式
ftpClient.enterLocalPassiveMode();
// ftpClient.makeDirectory("images");//在root目录下创建文件夹
// String remoteFileName = System.currentTimeMillis()+"_"+imageName;
// ftpClient.storeFile("/www/wwwroot/vftp/"+imageName, is);//文件你若是不指定就会上传到root目录下
ftpClient.storeFile(imageName, is);//文件你若是不指定就会上传到root目录下
is.close();
ftpClient.logout();
ftpClient.disconnect();
}
}
3、控制器
@RestController
public class FileUploadController {
@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()){
try {
InputStream inputStream = file.getInputStream();
FtpUtil.UploadImageByInputStream(inputStream,file.getOriginalFilename());
} catch (IOException e) {
e.printStackTrace();
return "fail";
}
return "success";
}else {
return "fail";
}
}
}
4、前端页面
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="file"><br>
<input type="submit" value="上传">
</form>
</body>
来源:https://blog.csdn.net/HSBhuang/article/details/118364078


猜你喜欢
- 我们可以试想ImageView能显示图片,而VideoView就是用来显示视频的。使用VideoView播放视频的步骤如下 【1】在界面布局
- 1.插入排序这个打麻将或者打扑克的很好理解, 比如有左手有一副牌1,2,4,7 ,来一张3的牌, 是不是就是手拿着这张牌从右往左插到2,4之
- 一、什么是热部署?热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。二、什么是SpringBoot热部署?SpringBoot
- 前言在上一章节Spring和Mybatis整合的原理详解中有写到Spring和MyBatis整合时用到的Bean扫描是Spring本身提供的
- 前言在前面的2个章节中,一一哥 带大家实现了在Spring Security中添加图形验证码校验功能,其实Spring Security的功
- 本文实例为大家分享了Android实现加载对话框的具体代码,供大家参考,具体内容如下这里简单说一下两种实现加载对话框的方式:1.使用动画让一
- 一、简介在现阶段的Android开发中,注解越来越流行起来,比如ButterKnife,Retrofit,Dragger,EventBus等
- 前言总结java常见的锁区分各个锁机制以及如何使用使用方法锁名考察线程是否要锁住同步资源乐观锁和悲观锁锁住同步资源后,要不要阻塞不阻塞可以使
- 在页面显示的时候,有时候文字无法显示完全,就只能显示部分文字,但是直接截取就只能截取等长字符串,英文和中文很难处理所以就写了下面方法,截取等
- 目标本文提供一种自定义注解,来实现业务审批操作的DEMO,不包含审批流程的配置功能。具体方案是自定义一个Aspect注解,拦截sevice方
- 前提:集成开发环境(IDE):eclipsejdk版本:8.0File类的几个方法:1)isFile()测试此抽象路径名表示的文件是否为普通
- 本文实例为大家分享了Java Socket编程实现多人交互聊天室的具体代码,供大家参考,具体内容如下本项目由三个.java文件(
- 目录题目及要求:提示:原创代码:代码思路:题目及要求:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。提示:0 <
- 使用的是idea+restful风格第一:引入依赖为:<!--poi--> <dependenc
- static void Main(string[] args) &nb
- 布局:<?xml version="1.0" encoding="utf-8"?><
- File存储(内部存储)一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密。Context提供了2个方法来打开输入
- 示例代码:<%@ Page Language="C#" AutoEventWireup="true&qu
- 回调函数就像activities一样,fragments也有它们自己的生命周期。理解fragments的生命周期,可以使你在它们被销毁的时候
- 本文实例为大家分享了Android刷新加载框架的具体代码,供大家参考,具体内容如下1.定义一个接口控制下拉和上拉public interfa