- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- springboot集成ftp實(shí)現文件上傳
本文實(shí)例為大家分享了springboot集成ftp實(shí)現文件上傳的具體代碼,供大家參考,具體內容如下
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; //端口號 @Value("${custom.config.file-server.port}") Integer FTP_PORT; //用戶(hù)名 @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服務(wù)器 ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登錄 reply = ftp.getReplyCode(); System.out.println("reply:" + reply); ftp.enterLocalPassiveMode();//開(kāi)啟被動(dòng)模式,否則文件上傳不成功,也不報錯 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); } } }
#//ftp服務(wù)器ip地址 custom.config.file-server.ip=111.229.65.208 #String FTP_ADDRESS; #//端口號 custom.config.file-server.port=21 #Integer FTP_PORT; #//用戶(hù)名 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;
/** * 上傳文件 */ String fileUrl = fileUtil.upload(file.getInputStream(), file.getOriginalFilename());
得到路徑:/upload2020/11/23/1606122890137.jpg
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站