linux 上 安裝 ftp server
下載下傳 vsftpd-2.1.0.tar.gz :
http://download.csdn.net/download/knight_black_bob/9120759 源碼下載下傳: http://download.csdn.net/download/knight_black_bob/9123609tar -zxvf vsftpd-2.1.0.tar.gz //解壓vsftp source檔案
cd vsftpd-2.1.0 //進入解壓後的目錄
如果你是 64位 解決該問題(uname -a)
vi vsf_findlibs.sh
sed -i 's/lib\//lib64\//g' vsf_findlibs.sh 替換所有的lib 為 lib64
make && make install 編譯安裝
cp vsftpd.conf /etc/ //将預設配置檔案考貝
vi /etc/vsftpd.conf
anonymous_enable=yes //允許匿名使用者登陸伺服器
local_enable=yes //允許本地使用者登入到伺服器
write_enable=yes
local_umask=022
/usr/local/sbin/vsftpd & //背景啟動vsftp
ok !!!!
package com.bao.cn.demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
public class Test {
public static void main(String[] args) {
testUpload();
testDownload();
}
/**
* FTP上傳單個檔案測試
*/
public static void testUpload() {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
try {
ftpClient.connect("xxx.xxx.xxx.xxx");
ftpClient.login("baoyou", "xxxxxx");
File srcFile = new File("C:\\Users\\Administrator\\Desktop\\ic_launcher.png");
fis = new FileInputStream(srcFile);
//設定上傳目錄
ftpClient.changeWorkingDirectory("/home/baoyou/aaa");
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
//設定檔案類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
boolean isUpload = ftpClient.storeFile("ic_launcher.png", fis);
System.out.println(isUpload);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP用戶端出錯!", e);
} finally {
IOUtils.closeQuietly(fis);
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("關閉FTP連接配接發生異常!", e);
}
}
}
/**
* FTP下載下傳單個檔案測試
*/
public static void testDownload() {
FTPClient ftpClient = new FTPClient();
FileOutputStream fos = null;
try {
ftpClient.connect("xxx.xxx.xxx.xxx");
ftpClient.login("baoyou", "xxxxxx");
String remoteFileName = "/home/baoyou/aaa/ic_launcher.png";
fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\ic_launcher2.png");
ftpClient.setBufferSize(1024);
//設定檔案類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
boolean isDown = ftpClient.retrieveFile(remoteFileName, fos);
System.out.println(isDown);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP用戶端出錯!", e);
} finally {
IOUtils.closeQuietly(fos);
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("關閉FTP連接配接發生異常!", e);
}
}
}
}
FTPClient.enterLocalPassiveMode();
這個方法的意思就是每次資料連接配接之前,ftp client告訴ftp server開通一個端口來傳輸資料。為什麼要這樣做呢,因為ftp server可能每次開啟不同的端口來傳輸資料,但是在linux上或者其他伺服器上面,由于安全限制,可能某些端口沒有開啟,是以就出現阻塞

捐助開發者
在興趣的驅動下,寫一個
免費
的東西,有欣喜,也還有汗水,希望你喜歡我的作品,同時也能支援一下。 當然,有錢捧個錢場(右上角的愛心标志,支援支付寶和PayPal捐助),沒錢捧個人場,謝謝各位。
謝謝您的贊助,我會做的更好!