最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot集成ftp實(shí)現(xiàn)文件上傳

 更新時(shí)間:2021年05月19日 11:25:12   作者:張兵游勇  
這篇文章主要為大家詳細(xì)介紹了springboot集成ftp實(shí)現(xiàn)文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了springboot集成ftp實(shí)現(xiàn)文件上傳的具體代碼,供大家參考,具體內(nèi)容如下

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服務(wù)器ip地址
  @Value("${custom.config.file-server.ip}") // 相關(guān)配置放在application.properties 中
    String FTP_ADDRESS;
  //端口號(hào)
  @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;

  //根據(jù)當(dāng)前文件生成 文件夾
  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服務(wù)器
      ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登錄
      reply = ftp.getReplyCode();
      System.out.println("reply:" + reply);

      ftp.enterLocalPassiveMode();//開啟被動(dòng)模式,否則文件上傳不成功,也不報(bào)錯(cuò)

      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();
  }

  // 創(chuàng)建文件夾,并切換到該文件夾
  // 比如: hello/test
  //最終會(huì)切換到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服務(wù)器ip地址
custom.config.file-server.ip=111.229.65.208
#String FTP_ADDRESS;
#//端口號(hào)
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查看

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解解密Java中的類型轉(zhuǎn)換問題

    詳解解密Java中的類型轉(zhuǎn)換問題

    這篇文章主要介紹了Java中的類型轉(zhuǎn)換問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java 從Set里面取出有序的記錄詳解及實(shí)例

    Java 從Set里面取出有序的記錄詳解及實(shí)例

    這篇文章主要介紹了Java 從Set里面取出有序的記錄詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理

    Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理

    這篇文章主要介紹了Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理,包括類與方法以及多態(tài)等支持面向?qū)ο笳Z言中的重要特點(diǎn),需要的朋友可以參考下
    2016-01-01
  • 詳解Java中switch的新特性

    詳解Java中switch的新特性

    這篇文章主要介紹了Java中switch的新特性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn)

    Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java接口回調(diào)的本質(zhì)詳解

    Java接口回調(diào)的本質(zhì)詳解

    大家好,本篇文章主要講的是Java接口回調(diào)的本質(zhì)詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • Java 互相關(guān)聯(lián)的實(shí)體無限遞歸問題的解決

    Java 互相關(guān)聯(lián)的實(shí)體無限遞歸問題的解決

    這篇文章主要介紹了Java 互相關(guān)聯(lián)的實(shí)體無限遞歸問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java基礎(chǔ)之Stream流原理與用法詳解

    Java基礎(chǔ)之Stream流原理與用法詳解

    從Java1.8開始提出了Stream流的概念,側(cè)重對(duì)于源數(shù)據(jù)計(jì)算能力的封裝,并且支持序列與并行兩種操作方式。本文就來為大家詳細(xì)講講Stream流原理與用法
    2022-08-08
  • Spring6?的JdbcTemplate的JDBC模板類的使用介紹(最新推薦)

    Spring6?的JdbcTemplate的JDBC模板類的使用介紹(最新推薦)

    JdbcTemplate?是Spring?提供的一個(gè)JDBC模板類,是對(duì)JDBC的封裝,簡(jiǎn)化JDBC代碼,當(dāng)然,你也可以不用,可以讓Spring集成其它的ORM框架,這篇文章主要介紹了Spring6?的JdbcTemplate的JDBC模板類的詳細(xì)使用說明,需要的朋友可以參考下
    2024-05-05
  • Java 合并多個(gè)MP4視頻文件

    Java 合并多個(gè)MP4視頻文件

    這篇文章主要介紹了Java 合并多個(gè)MP4視頻文件的方法,幫助大家利用Java處理視頻,提高辦公效率,感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論

自贡市| 新河县| 涟水县| 甘洛县| 兰考县| 常州市| 英吉沙县| 双江| 剑河县| 山东省| 稷山县| 涡阳县| 会东县| 斗六市| 承德市| 阿荣旗| 介休市| 盘锦市| 克什克腾旗| 石台县| 宁安市| 红桥区| 连南| 宁南县| 习水县| 蓝山县| 沅陵县| 临泉县| 密云县| 景宁| 珠海市| 菏泽市| 萝北县| 余姚市| 班戈县| 襄樊市| 阿勒泰市| 汝城县| 于田县| 永春县| 丰顺县|