ftp工具類
㈠ 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