基於FTPClient的文件上傳至Nginx服務器

1、Nginx作圖片服務器

一般一個小型系統的圖片,保存在應用服務器的項目目錄下便可,可是對於一箇中型規模的系統,就須要使用獨立的圖片服務器,單獨分離圖片的訪問。目的是一方面緩解應用服務器的訪問壓力,另外一方面,一旦服務器作了集羣配置,那麼圖片資源的同步和共享就是問題。nginx

 

1. 主要特色

1. 分擔web服務器的訪問壓力,對於圖片的訪問壓力轉移到圖片服務器中。c++

2. 圖片服務器可以專門針對圖片訪問進行優化。【有專門的換存方案,提升響應速度。】web

3. 提升擴展性,圖片文件的量急劇增加【社交網站,門戶網站,電商網站等。】apache

4. 解決集羣架構中,圖片文件數據不一致的問題。服務器

2. Nginx安裝

1. 安裝gcc架構

yum -y install gcc gcc-c++maven

2. 安裝openssltcp

yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel工具

3. 安裝Nginx測試

① 解壓

tar zxvf nginx-x.x.x.tar.gz

② 執行configure文件

./configure

③ 編譯

make

④ 編譯安裝

make install

4. 使用

a) 啓動

執行 /usr/local/nginx/sbin/nginx 命令,默認端口號是80

./nginx -c /usr/work/nginx/conf/nginx.conf

b) 中止

./nginx -s stop

c) 從新加載配置並生效

./nginx -s reload

 

5. 配置Nginx服務器中默認的服務器位置:

修改nginx.conf配置文件。

3. 安裝FTP服務

1. 安裝vsftpd服務

yum -y install vsftpd

2. 添加一個訪問ftp的用戶

useradd baizhi  --- 添加用戶百知ftp

passwd baizhi   --- 修改密碼

3. 防火牆放行21端口,ftp的默認訪問端口

--添加開放端口

/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT   

/etc/init.d/iptables save   --保存配置

service iptables restart    --重啓防火牆服務

4. 設置ftp訪問

 

1. 啓動ftp

/etc/init.d/vsftpd start

2. 關閉ftp

/etc/init.d/vsftpd stop

3. 關閉匿名訪問

編vsftp的配置文件:/etc/vsftpd/vsftpd.conf

1. 使用主動模式,不要使用被動模式鏈接。

2. 設置FTP開機啓動

chkconfig vsftpd on

4. 整合FTP和Nginx

1. 將Nginx的location目錄,與FTP的用戶關聯起來

1. 將ftp用戶目錄的讀權限開放755權限

chmod -R 755 /home/baizhi  

測試經過Nginx服務器訪問服務器端資源

 

5. 使用Java代碼的FTP功能上傳文件

1. FTPClinet簡介

a) 是apache提供的commons-net包中的一個API,做用是使用FTP協議遠程操做服務器端文件資源。

2. FTPClient的資源maven座標

API介紹

//1. 準備本地文件輸入流

FileInputStream in = new FileInputStream(new File("D:/text1.xls"));

//2. 建立FTP客戶端工具對象。

FTPClient ftp = new FTPClient();

//3. ftp客戶端鏈接遠程FTP服務器,url表明FTP服務器的ip地址,port表明ftp端口號,默認是21。

ftp.connect("192.168.137.137", 21);

//4. 登錄FTP服務器,username和password分別是FTP服務器(CentOS系統)的用戶名和密碼。

ftp.login("baizhi", "admins");

//5. 得到當前客戶端對於FTP服務器的狀態嗎

int replyCode = ftp.getReplyCode();

//6. 判斷當前的狀態嗎是否可使用FTP服務器。[官方文檔上要求寫上]

if (!FTPReply.isPositiveCompletion(replyCode)) {

ftp.disconnect();

System.out.println("FTP服務器不可用異常");

}

//7. 設置緩衝大小爲1k

ftp.setBufferSize(1024);

//8. 設置文件類型爲二進制文件

ftp.setFileType(FTP.BINARY_FILE_TYPE);

//9. 切換當前操做的目錄

ftp.changeWorkingDirectory("www/baizhi/images/");

//10. 將in輸入流中的文件保存在FTP服務器的切換後的目錄中,而且文件名爲filename。

ftp.storeFile("text.xls", in);//

//11. 關閉輸入流

in.close();

//12. 退出登錄

ftp.logout();

//13. 斷開ftp客戶端鏈接。

if (ftp.isConnected()) {

ftp.disconnect();

}

 

 

 

2. 整合SpringMVC

a) 須要將SpringMVC接受文件的MultipartFile對象,轉化成輸入流。

multipartFile.getInputStream();而後使用ftp.storeFile(文件名,上傳文件的輸入流)便可完成上傳。

相關文章
相關標籤/搜索