服务器安装FTP服务

  • 1.安装vsftpd

    yum -y install vsftpd
    
  • 2.关闭匿名访问

    vim /etc/vsftpd/vsftpd.conf
    

    将anonymous_enable的值改为NO

  • 3.启动服务

systemctl start vsftpd.service
  • 4.查看服务状态
systemctl status vsftpd.service

  • 5.开放访问端口

    firewall-cmd --zone=public --add-port=21/tcp --permanent
    firewall-cmd --zone=public --add-port=1025-65535/tcp --permanent
    systemctl -restart firewalld
    

    云服务器安全组一定要开放端口21,否则无法正常连接。

  • 6.新增用户

    adduser user
    passwd user
    

    也可以在宝塔面板FTP中新增用户


    SpringBoot上传文件到FTP服务器

  • 1.添加依赖

        <!-- ftpclient FTO上传文件组件 --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency>

2.Ftp工具类

import com.turing.JavaBean.FtpInformation;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;/**** @Author: 又蠢又笨的懒羊羊程序猿* @CreateTime: 2021年07月22日 12:39:47*/
@Component //这就是我们刚才加入的依赖
public class FtpUtil {/*** ftp服务器ip地址*/private static final String FTP_ADDRESS = "39.103.203.27";/*** 端口号*/private static final int FTP_PORT = 21;/*** 用户名*/private static String FTP_USERNAME;/*** 密码*/private static String FTP_PASSWORD;/*** 路径都是/home/加上用户名*/private static String FTP_BASEPATH = "/home/";/*** 参数传过来了文件和文件的输入流* @param file* @return* @throws Exception*/public static String uploadFile(FtpInformation ftpInformation,MultipartFile file)throws Exception {FTP_USERNAME = ftpInformation.getFTP_USERNAME();FTP_PASSWORD = ftpInformation.getFTP_PASSWORD();if ("/home/".equals(FTP_BASEPATH)){FTP_BASEPATH = FTP_BASEPATH+FTP_USERNAME+"/";}//获取上传的文件流InputStream inputStream = file.getInputStream();//获取上传的文件名String filename = file.getOriginalFilename();//获取文件后缀String suffix = filename.substring(filename.lastIndexOf("."));//使用UUID拼接后缀,定义一个不重复的文件名String finalName = UUID.randomUUID() + suffix;//这是最开始引入的依赖里的方法FTPClient ftp = new FTPClient();ftp.setControlEncoding("utf-8");try {int reply;// 连接FTP服务器ftp.connect(FTP_ADDRESS, FTP_PORT);// 登录ftp.login(FTP_USERNAME, FTP_PASSWORD);//连接成功会的到一个返回状态码reply = ftp.getReplyCode();//可以输出看一下是否连接成功System.out.println(reply);//设置文件类型ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//修改操作空间ftp.changeWorkingDirectory(FTP_BASEPATH);//对了这里说明一下你所操作的文件夹必须要有可读权限,chomd 777 文件夹名//这里我就是用的我的home文件夹//这里开始上传文件ftp.storeFile(finalName, inputStream);if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();System.out.println("连接失败");return null;}System.out.println("连接成功!");inputStream.close();ftp.logout();return FTP_BASEPATH+finalName;} catch (Exception e) {e.printStackTrace();System.out.println("ERROR:"+e.getMessage());} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return null;}
}
import lombok.AllArgsConstructor;
import lombok.Data;/*** @Author: 又蠢又笨的懒羊羊程序猿* @CreateTime: 2021年07月24日 13:07:19*/
@Data
@AllArgsConstructor
public class FtpInformation
{private String FTP_USERNAME;private String FTP_PASSWORD;
}
    //记住添加请求头,否则无法接收文件@PostMapping(value = "/uploadFile", headers = "content-type=multipart/form-data")  @ResponseBody@ApiOperation("上传文件")  public ResponseBean uploadFile(FtpInformation ftpInformation, @RequestParam("files") MultipartFile[] files){List<String> list = new ArrayList<>();for (MultipartFile file : files) {try {//调用自定义的FTP工具类上传文件String finalName = FtpUtil.uploadFile(ftpInformation,file);if (StringUtils.isEmpty(finalName)){throw new Exception("Upload Error");}list.add(finalName);} catch (Exception e) {log.error("ERROR:{}",e.getMessage());return new ResponseBean(HttpStatusCode.INTERNAL_SERVER_ERROR,null);}}return new ResponseBean(HttpStatusCode.Success,list);}

  • 3.测试接口

用Swagger测试接口时文件无法正常接收

因此我们使用Postman进行测试

​ 测试成功

以上。

Ftp实现上传文件至远程服务器相关推荐

  1. springboot以FTP方式上传文件到远程服务器

    此处远程服务器是ubuntu,关于ftpserver的配置请参考该文https://blog.csdn.net/sunxiaoju/article/details/85224602,在此处就不再赘述. ...

  2. 文件怎么上传远程服务器,怎么上传文件到远程服务器

    怎么上传文件到远程服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服 ...

  3. 向服务器上传文件的命令,上传文件到远程服务器的命令

    上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  4. Git上传本地文件到服务器,git上传文件到远程服务器

    git上传文件到远程服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  5. 上传文件到服务器指令,上传文件到远程服务器的命令

    上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  6. java上传文件到远程服务器(一)---HttpURLConnection方式

    我们在之前的文章 JavaWeb静态资源分离思路 中已经了解到要把文件上传到静态资源服务器有三种方式: java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务) java使用Htt ...

  7. Mac上传文件到远程服务器

    Mac上传文件到远程服务器,可以利用mac自带的终端来进行上传,使用sftp方式 终端shell菜单-> 新建远程连接 sftp方式,输入远程服务器ip 3. 然后连接,连的时候会让输入密码,输 ...

  8. (三)使用xftp上传文件到远程服务器

    一.下载与安装 百度云下载链接 xftp 6永久免费版下载 链接:https://pan.baidu.com/s/14sPdEcEP6rdhhr09jcEZcw 提取码:mwee 如果上述链接失效,可 ...

  9. java 实现上传文件到远程服务器

    阿里云低价服务器1折特惠,优惠爽翻天,点我立即低价购买 import java.io.DataOutputStream; import java.io.File; import java.io.Fil ...

最新文章

  1. [AT2369] [agc013_c] Ants on a Circle
  2. MS BizSpark计划-免费提供软件和服务
  3. mssql 计划怎每隔n秒_前端:调你一个接口6秒还配资深工程师?后端:有24部分需要处理!...
  4. mysql 存储过程与存储函数
  5. Python-OpenCV学习--电脑外接摄像头实时采集FAST角点并显示
  6. Python高级语法-详解set机制
  7. Xgboost算法原理详解及python实现
  8. NULL和INITIAL的区别 and database interface
  9. DCOS实践分享(6):基于DCOS的大数据应用分享
  10. ajax获取get请求,get请求
  11. VC6.0 导入资源崩溃
  12. (转)Spring如何装配各种集合类型的属性
  13. Qt 该文件不能在当前页码(936)中表示字符
  14. Visual Studio 2008破解激活升级方法
  15. 计算机网络自顶向下 1
  16. 人工智能时代孩子该学点什么?
  17. java pack unpack_pack/unpack函数与二进制
  18. python基础教程第4版pdf百度云-Python入门书籍电子版PDF百度云网盘免费下载
  19. 线上问题:java.sql.SQLException: connection holder is null
  20. Linux != Windows( Linux 不是 Windows)

热门文章

  1. Markdown 中的常用 LaTex 数学公式
  2. 组态王怎么做超级曲线_鱼怎么做才好吃?试试这个方法,吃着过瘾,还超级下饭!(收藏)...
  3. tensorflow就该这么学--3
  4. 语音预处理:服务器平台“部署”
  5. 文巾解题 1765. 地图中的最高点
  6. 天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)
  7. 信号处理频谱分析中,如何选择合适的窗函数
  8. Hadoop学习之MapReduce(五)
  9. 计算机二级关于数据结构的题目,计算机二级MS OFFICE 练习题(一五三)
  10. python画图的模块_python强大的绘图模块matplotlib示例讲解