日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Ftp实现上传文件至远程服务器

發(fā)布時(shí)間:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ftp实现上传文件至远程服务器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

服務(wù)器安裝FTP服務(wù)

  • 1.安裝vsftpd

    yum -y install vsftpd
  • 2.關(guān)閉匿名訪問(wèn)

    vim /etc/vsftpd/vsftpd.conf

    將anonymous_enable的值改為NO

  • 3.啟動(dòng)服務(wù)

systemctl start vsftpd.service
  • 4.查看服務(wù)狀態(tài)
systemctl status vsftpd.service

  • 5.開(kāi)放訪問(wèn)端口

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

    云服務(wù)器安全組一定要開(kāi)放端口21,否則無(wú)法正常連接。

  • 6.新增用戶

    adduser user passwd user

    也可以在寶塔面板FTP中新增用戶


    SpringBoot上傳文件到FTP服務(wù)器

  • 1.添加依賴

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

2.Ftp工具類(lèi)

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服務(wù)器ip地址*/private static final String FTP_ADDRESS = "39.103.203.27";/*** 端口號(hào)*/private static final int FTP_PORT = 21;/*** 用戶名*/private static String FTP_USERNAME;/*** 密碼*/private static String FTP_PASSWORD;/*** 路徑都是/home/加上用戶名*/private static String FTP_BASEPATH = "/home/";/*** 參數(shù)傳過(guò)來(lái)了文件和文件的輸入流* @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拼接后綴,定義一個(gè)不重復(fù)的文件名String finalName = UUID.randomUUID() + suffix;//這是最開(kāi)始引入的依賴?yán)锏姆椒?/span>FTPClient ftp = new FTPClient();ftp.setControlEncoding("utf-8");try {int reply;// 連接FTP服務(wù)器ftp.connect(FTP_ADDRESS, FTP_PORT);// 登錄ftp.login(FTP_USERNAME, FTP_PASSWORD);//連接成功會(huì)的到一個(gè)返回狀態(tài)碼reply = ftp.getReplyCode();//可以輸出看一下是否連接成功System.out.println(reply);//設(shè)置文件類(lèi)型ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//修改操作空間ftp.changeWorkingDirectory(FTP_BASEPATH);//對(duì)了這里說(shuō)明一下你所操作的文件夾必須要有可讀權(quán)限,chomd 777 文件夾名//這里我就是用的我的home文件夾//這里開(kāi)始上傳文件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; } //記住添加請(qǐng)求頭,否則無(wú)法接收文件@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 {//調(diào)用自定義的FTP工具類(lèi)上傳文件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.測(cè)試接口

用Swagger測(cè)試接口時(shí)文件無(wú)法正常接收

因此我們使用Postman進(jìn)行測(cè)試

? 測(cè)試成功

以上。

總結(jié)

以上是生活随笔為你收集整理的Ftp实现上传文件至远程服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。