當前位置:首頁 » 文件管理 » ftp工具類

ftp工具類

發布時間: 2022-11-15 02:06:26

ftp主動,被動模式----附代碼

http://blog.csdn.net/wumenglu1018/article/details/54233826

主動模式:

被動模式:

主動FTP:
命令連接:客戶端 大於1024 埠 -> 伺服器 21 埠
數據連接:客戶端 大於1024 埠 <- 伺服器 20 埠

被動FTP:
命令連接:客戶端 大於1024 埠 -> 伺服器 21 埠
數據連接:客戶端 大於1024 埠 -> 伺服器 大於1024 埠

簡要總結:

辦法:

例:
Class FTPParam : FTP所需參數

Class FTPUtil: ftp工具類

java上傳文件到區域網的ftp伺服器上,用戶不需要等待

點擊提交之後,你啟動一個線程去完成上傳的工作就行,沒有必要用隊列,除非是你的文件特別大,一般上傳文件還是很快的。Apache有專門的ftp處理工具類的。

㈢ ftpclient的工具類支持linux

支持,linux直接安裝client就可以了,yum install ftp -y 就可以直接安裝了,當然你要配置好yum源

㈣ FTPClient 踩坑記錄(開啟日誌)

先說結論,我最後才發現, 只要把這個工具類的日誌打開 很多問題就浮出水面了 。因為FTPClient本身是沒有日誌的,裡面連接錯誤,許可權確實,讀取失敗他全部都不告訴你!!其實調試很多系統都是這樣,

使用ftpClient操作ftp為我們提供方便的同時,也屏蔽了很多對我們調試有用的信息。其實很多時候,去調試一個不熟悉的東西,首先就是要查看日誌,最開始我只是見一步走一步,一步一步的調試ftpClient的源碼才發現問題所在。但是只要開啟了服務端和客戶端的日誌,問題就好解決了!

㈤ SpringBoot項目集成FTP

FTP是一個文件傳輸協議,被開發人員廣泛用於在互聯網中文件傳輸的一套標准協議。

而我們通常在開發過程中也要通過FTP來搭建文件系統,用於存儲系統文件等。

目前正值SpringBoot熱潮,所以我們接下來會一起學習一下SpringBoot如何集成FTP,以及相關的FTP組件包,還有其主要提供的幾個方法。

當然在這系列文章結尾,我們還會給出確切的FTP操作工具類,算是一些小成果,希望和大家共勉。

我在此就不介紹如何安裝FTP了,但是我可以推薦給大家一些軟體作為選擇。

Linux版本,推薦使用vsftpd進行搭建FTP,只需要改指定的幾個配置,添加上用戶即可。

Windows版本,推薦使用Serv-U進行搭建FTP,圖形化界面,有中文版,操作起來很簡單。

這里我們對FTP相關的組件包使用的是edtFTPj,其實之前很多人都選擇的是Java自帶的包來實現FTP功能的。

在我們的SpringBoot項目中pom.xml下添加以下依賴。

更新maven進行引入,然後我們進行下一步。

引入兩個工具類。

我這里先貢獻一下代碼,請大家酌情作為參考。

㈥ (FTP文件傳送服務)是什麼意思

文件傳輸協議FTP(File Transfer Protocol)是Internet傳統的服務之一。FTP使用戶能在兩個聯網的計算機之間傳輸文件,它是Internet傳遞文件最主要的方法。
ftp的功能包括上傳和下載兩部分:

下載:登錄遠程ftp伺服器後,將伺服器提供的文件通過網路傳輸到本地計算機的過程;
上傳:登錄遠程ftp伺服器後,將本地計算機上的文件通過網路傳輸到遠程伺服器進行存儲的過程。

㈦ 使用java向ftp上傳圖片上傳失敗,無異常,但是刷新ftp目錄沒有創建文件,這是我網上扒的工具類代碼

我也不是很會但是我感覺你的路徑不能填寫IP必需是以電腦的絕對路徑吧.

㈧ ftp java 下載的時候怎麼保存到指定位置

通過工具類來實現本地路徑定義和下載即可。

import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class CCFCCBFTP {

/**
* 上傳文件
*
* @param fileName
* @param plainFilePath 明文文件路徑路徑
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上傳文件開始");
Log.info("連接遠程上傳伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("檢查文件路徑是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查詢文件路徑不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上傳文件成功:"+fileName+"。文件保存路徑:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}

}

/**
*下載並解壓文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下載並解密文件開始");
Log.info("連接遠程下載伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
CMBCUtil.CMBCLOGINPASSWORD);

FTPFile[] fs;

ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下載文件開始。");
ftpClient.setBufferSize(1024);
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下載文件結束:"+localFilePath);
}
}
Log.info("檢查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查詢無結果,請稍後再查詢。");
return bl;
}
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}

// 調用樣例:
public static void main(String[] args) {
try {

// 明文文件路徑
String plainFilePath = "D:/req_20150204_0011.txt";
// 密文文件路徑
String secretFilePath = "req_20150204_00134.txt";
fileDownloadByFtp("D://123.zip","123.zip","req/20150228");
} catch (Exception e) {
e.printStackTrace();
}
}

}

㈨ 救火,如何用JAVA實現FTP多文件上傳

新建一個web工程,用來測試上傳功能。搭建好從前台訪問後台的整個框架,並測試是否能接受參數。從apache官網上下載jar包,這里我們需要的jar包共三個,從官網或者其他途徑都可以下載得到。編寫上傳的工具類。工具類主要是涉及兩個方法,首先是連接伺服器的方法。和我們平常常用的連接資料庫等的方法類似,需要有伺服器名,用戶名和密碼。第二個主要的方法就是上傳的方法,上傳的方法接受一個文件,這里需要注意的,需要去判斷傳入的是一個文件還是一個文件夾,如果是文件夾,需要循環進行文件上傳處理。寫方法調用工具類里的方法,並測試上傳功能。這里需要注意的是連接伺服器的埠號,20表示連接伺服器,21表示有上傳操作。

㈩ java ftp 有哪些工具類

java ftp 最常用的是apache commons-net


commons-net項目中封裝了各種網路協議的客戶端,支持的協議包括:



  • FTP

  • NNTP

  • SMTP

  • POP3

  • Telnet

  • TFTP

  • Finger

  • Whois

  • rexec/rcmd/rlogin

  • Time (rdate) and Daytime

  • Echo

  • Discard

  • NTP/SNTP




其他的還有FTP4J ,jftp

熱點內容
終端配置賬號該如何改密碼 發布:2024-05-05 11:24:37 瀏覽:823
成都存儲研發招聘 發布:2024-05-05 11:24:29 瀏覽:283
電腦伺服器名稱怎麼查找 發布:2024-05-05 10:49:37 瀏覽:469
電腦連到代理伺服器 發布:2024-05-05 10:40:02 瀏覽:249
華為安卓手機如何投屏到雷克薩斯 發布:2024-05-05 10:37:50 瀏覽:210
微博上傳原圖 發布:2024-05-05 10:20:05 瀏覽:749
伺服器換電腦需要什麼東西 發布:2024-05-05 09:52:28 瀏覽:754
老算盤演算法 發布:2024-05-05 09:43:10 瀏覽:841
ps存儲顯示不含通道 發布:2024-05-05 09:32:35 瀏覽:103
如何用安卓做一個識物界面表 發布:2024-05-05 09:29:28 瀏覽:99