中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot如何通過集成ftp實現文件上傳

發布時間:2022-02-25 15:15:10 來源:億速云 閱讀:573 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“springboot如何通過集成ftp實現文件上傳”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“springboot如何通過集成ftp實現文件上傳”這篇文章吧。

1、FileUtil

package io.renren.modules.oss.utils;


import org.apache.commons.net.ftp.FTPClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class FileUtil {

  //ftp服務器ip地址
  @Value("${custom.config.file-server.ip}") // 相關配置放在application.properties 中
    String FTP_ADDRESS;
  //端口號
  @Value("${custom.config.file-server.port}")
  Integer FTP_PORT;
  //用戶名
  @Value("${custom.config.file-ftp-user}")
  String FTP_USERNAME;
  //密碼
  @Value("${custom.config.file-ftp-password}")
  String FTP_PASSWORD;
  //圖片路徑
  @Value("${custom.config.file-savepath}")
  String FTP_BASEPATH;

  //根據當前文件生成 文件夾
  private static String getTimePath() {
    Date now = new Date();

    DateFormat format = new SimpleDateFormat("yyyy/MM/dd/");
    return format.format(now);
  }


  public String upload(InputStream inputStream, String originName) {

    StringBuilder url = new StringBuilder();

    FTPClient ftp = new FTPClient();
    ftp.setControlEncoding("GBK");
    try {
      int reply;
      ftp.connect(FTP_ADDRESS, FTP_PORT);// 連接FTP服務器
      ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登錄
      reply = ftp.getReplyCode();
      System.out.println("reply:" + reply);

      ftp.enterLocalPassiveMode();//開啟被動模式,否則文件上傳不成功,也不報錯

      String timePath = getTimePath();
      String saveDir = FTP_BASEPATH + timePath;
      url.append(saveDir);

      ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
      createDir(ftp, saveDir);
      //ftp.makeDirectory(saveDir);
      //   ftp.changeWorkingDirectory(FTP_BASEPATH);
      originName= System.currentTimeMillis()+originName.substring(originName.lastIndexOf('.'));
      url.append(originName);
      ftp.storeFile(originName, inputStream);
      inputStream.close();
      ftp.logout();

    } catch (IOException e) {
      throw new RuntimeException("文件上傳失敗");
    } finally {
      if (ftp.isConnected()) {
        try {
          ftp.disconnect();
        } catch (IOException ioe) {
        }
      }
    }

    return url.toString();
  }

  // 創建文件夾,并切換到該文件夾
  // 比如: hello/test
  //最終會切換到test 文件夾返回
  private void createDir(FTPClient client, String path) throws IOException {
    String[] dirs = path.split("/");
    for (String dir : dirs) {
      if (StringUtils.isEmpty(dir)) {
        continue;
      }
      if (!client.changeWorkingDirectory(dir)) {
        client.makeDirectory(dir);
      }
      client.changeWorkingDirectory(dir);
    }
  }

}

2、application.properties

#//ftp服務器ip地址
custom.config.file-server.ip=111.229.65.208
#String FTP_ADDRESS;
#//端口號
custom.config.file-server.port=21
#Integer FTP_PORT;
#//用戶名
custom.config.file-ftp-user=root
#String FTP_USERNAME;
#//密碼
custom.config.file-ftp-password=123456
#String FTP_PASSWORD;
#//圖片路徑
custom.config.file-savepath=/upload
#String FTP_BASEPATH;

3、UploadController

 /**
  * 上傳文件
  */
String fileUrl = fileUtil.upload(file.getInputStream(), file.getOriginalFilename());

得到路徑:/upload2020/11/23/1606122890137.jpg

4、ftp查看

以上是“springboot如何通過集成ftp實現文件上傳”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红原县| 湖北省| 穆棱市| 同仁县| 连云港市| 平远县| 临城县| 乾安县| 天柱县| 安陆市| 阿拉善左旗| 吉首市| 林芝县| 太康县| 孝义市| 资中县| 千阳县| 嫩江县| 朔州市| 大冶市| 长武县| 炉霍县| 宜宾县| 台东市| 高清| 稻城县| 云霄县| 黑龙江省| 农安县| 绥德县| 龙泉市| 新平| 涟源市| 岱山县| 申扎县| 龙江县| 咸阳市| 绥化市| 东平县| 永昌县| 禹州市|