java實(shí)現(xiàn)上傳文件到FTP
本文實(shí)例為大家分享了java實(shí)現(xiàn)上傳文件到FTP的具體代碼,供大家參考,具體內(nèi)容如下
需求說明:將指定文件上傳到FTP,上傳成功后修改文件名。
獲取文件名及路徑(這里是從數(shù)據(jù)庫獲取,所以前面的代碼就不CV了)
/** ?? ? * 測試上傳 ?? ? * @param map 從數(shù)據(jù)庫獲取到的文件信息 (包含文件路徑FILE_PATH 文件類型FILE_TYPE等信息) ?? ? */ ?? ? public void testUpdFtpFile(Map<String,Object> map){ ?? ??? ? /*上傳附件到FTP*/ ?? ??? ? FileInputStream inputStream = null; ?? ??? ? try { ?? ??? ? ? ?//找到要上傳的文件? ?? ??? ? ?? ?String originfilename = "E:\\work\\files\\"+map.get("FILE_PATH").toString(); ?? ??? ? ?? ?//轉(zhuǎn)成流 ?? ??? ? ?? ?inputStream = new FileInputStream(originfilename); ?? ??? ? ? ?//上傳后的文件名+文件類型?? ??? ??? ??? ??? ??? ? ?? ??? ? ? ?String ftpName = "上傳到FTP后的文件名."+map.get("FILE_TYPE"); ?? ??? ? ?? ?boolean updFtpFile = FtpClientFile.uploadFile(ftpName,inputStream); ?? ??? ? ?? ?if(updFtpFile){ ?? ??? ? ?? ??? ?//打印下日志 ?? ??? ? ?? ??? ?System.out.println(("=======文件已上傳到FTP========")); ?? ??? ? ?? ?} ?? ??? ? } catch (Exception e) { ?? ??? ? ?? ?throw new BusinessException("附件上傳失?。?); ?? ??? ? } ?? ? }
FtpClientFile工具類方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; ? import com.google.gson.JsonArray; ? /** ?* ftp 上傳文件 ?* FTPClient commons.net 3.0.1版本 ?* @author Lenovo ?* ?*/ public class FtpClientFile { ?? ? ?? ?private static final String hostname = "10.xx.xx.xx" ;//FTP IP ?? ? ?? ?private static final int port = 21;//FTP 端口號 ?? ? ?? ?private static final String username = "ftpName";//FTP 登錄賬號 ? ? ?? ?private static final String password = "ftpPsd"; //FTP 登錄密碼 ?? ? ?? ?private static final String pathname = "/";//FTP 工作路徑 ?? ? ?? ? ?? ?/** ?? ? * 上傳文件(可供Action/Controller層使用) ?? ? * @param fileName 上傳到FTP服務(wù)器后的文件名稱 ?? ? * @param inputStream 輸入文件流 ?? ? * @return ?? ? */ ?? ? public static boolean uploadFile(String fileName,FileInputStream inputStream){ ?? ??? ?? ?? ? boolean flag = false; ?? ? FTPClient ftpClient = new FTPClient(); ?? ? //設(shè)置超時(shí) ?? ? ftpClient.setConnectTimeout(60*60*1000); ?? ? //設(shè)置編碼 ?? ? ftpClient.setControlEncoding("UTF-8"); ?? ? try { ?? ??? ? //連接FTP服務(wù)器 ?? ??? ? ftpClient.connect(hostname, port); ?? ??? ? //登錄FTP服務(wù)器 ?? ??? ? ftpClient.login(username, password); ?? ??? ? //是否成功登錄FTP服務(wù)器?? ? ?? ??? ? int replyCode = ftpClient.getReplyCode(); ?? ??? ? if(!FTPReply.isPositiveCompletion(replyCode)){ ?? ??? ??? ? return flag; ?? ? ?? ??? ?} ?? ??? ? System.out.println("===========登錄FTP成功了=========="); ?? ??? ? ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ?? ??? ? //切換路徑 創(chuàng)建路徑 ?? ??? ? ftpClient.makeDirectory(pathname); ?? ??? ? ftpClient.changeWorkingDirectory(pathname); ?? ??? ? ftpClient.enterLocalPassiveMode(); ?? ??? ? //設(shè)置緩沖 ?? ??? ? ftpClient.setBufferSize(1024 * 1024 * 20); ?? ??? ? //保持連接 ?? ??? ? ftpClient.setKeepAlive(true); ?? ??? ? boolean a = ftpClient.storeFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"), inputStream); ?? ??? ? if(a){ ?? ??? ??? ? System.out.println("===========創(chuàng)建文件成功=============="+a); ?? ??? ??? ??? ? String fileName2 = fileName+"AAA"; ?? ??? ??? ??? ? boolean status = ftpClient.rename(fileName, fileName2); ?? ??? ??? ??? ? if(status) ?? ??? ??? ??? ? System.out.println("===========修改文件名稱成功=============="+status); ?? ??? ??? ? } ?? ??? ? inputStream.close(); ?? ??? ? ftpClient.logout(); ?? ??? ? flag = true; ?? ? ?? ?} catch (Exception e) { ?? ? ?? ??? ?e.printStackTrace(); ?? ? ?? ?} finally{ ?? ? ?? ??? ?if(ftpClient.isConnected()){ ?? ? ?? ??? ??? ?try { ?? ? ?? ??? ??? ??? ?ftpClient.disconnect(); ?? ? ?? ??? ??? ?} catch (IOException e) { ?? ? ?? ??? ??? ??? ?e.printStackTrace(); ?? ? ?? ??? ??? ?} ?? ? ?? ??? ?} ?? ? ?? ?} ?? ? ?? ?return flag; ?? ? ?? ? ?? ? } ?? ? ?? ?? ?? ? ?? ? ?? ?/* public static void main(String[] args) { ?? ??? ? String originfilename = "C:\\Users\\Lenovo\\Desktop\\xx.txt"; ?? ??? ? FileInputStream inputStream; ?? ??? ? try { ?? ??? ??? ?inputStream = new FileInputStream(new File(originfilename)); ?? ??? ??? ?boolean a = uploadFile("xx.txt","/104/",inputStream); ?? ??? ??? ?System.out.println("上傳文件成功============"+a); ?? ??? ? } catch (FileNotFoundException e) { ?? ??? ??? ?e.printStackTrace(); ?? ??? ? } ?? ?}*/ ?? ?? ?? ?? }
上傳文件到FTP時(shí) 注意:是否有權(quán)限登錄服務(wù)器/上傳文件等操作。
默認(rèn)在瀏覽器輸入自己的ftp地址訪問下看看 ftp://10.xx.xx.xx:端口號 登錄看看
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JAVA中使用FTPClient實(shí)現(xiàn)文件上傳下載實(shí)例代碼
- java實(shí)現(xiàn)FTP文件上傳與文件下載
- JAVA技術(shù)實(shí)現(xiàn)上傳下載文件到FTP服務(wù)器(完整)
- Java中FTPClient上傳中文目錄、中文文件名亂碼問題解決方法
- Java通過FTP服務(wù)器上傳下載文件的方法
- JAVA SFTP文件上傳、下載及批量下載實(shí)例
- Java實(shí)現(xiàn)FTP文件與文件夾的上傳和下載
- java實(shí)現(xiàn)ftp上傳 如何創(chuàng)建文件夾
- Java實(shí)現(xiàn)FTP批量大文件上傳下載篇1
- java使用ftp上傳文件示例分享
相關(guān)文章
struts2中實(shí)現(xiàn)多個(gè)文件同時(shí)上傳代碼
struts2中實(shí)現(xiàn)多個(gè)文件同時(shí)上傳代碼,需要的朋友可以參考一下2013-04-04Java數(shù)據(jù)結(jié)構(gòu)之圖的兩種搜索算法詳解
在很多情況下,我們需要遍歷圖,得到圖的一些性質(zhì)。有關(guān)圖的搜索,最經(jīng)典的算法有深度優(yōu)先搜索和廣度優(yōu)先搜索,接下來我們分別講解這兩種搜索算法,需要的可以參考一下2022-11-11idea使用pagehelper實(shí)現(xiàn)后端分頁功能的步驟詳解
這篇文章主要介紹了idea使用pagehelper實(shí)現(xiàn)后端分頁功能的步驟,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09詳解Java合并數(shù)組的兩種實(shí)現(xiàn)方式
這篇文章主要介紹了Java合并數(shù)組的兩種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04ThreadLocal常用方法、使用場景及注意事項(xiàng)說明
這篇文章主要介紹了ThreadLocal常用方法、使用場景及注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10