Java FtpClient 完成文件上傳服務。本站提示廣大學習愛好者:(Java FtpClient 完成文件上傳服務)文章只能為提供參考,不一定能成為您想要的結果。以下是Java FtpClient 完成文件上傳服務正文
1、裝置
sudo apt-get install vsftpd
2、添加用戶(uftp)
sudo useradd -d /home/uftp -s /bin/bash uftp
3、設置用戶密碼
sudo useradd -d /home/uftp -s /bin/bash uftp
4、創立用戶目錄
sudo mkdir /home/uftp
5、設置用戶密碼
sudo passwd uftp
6、設置/etc/vsftpd.conf配置文件
sudo vim /etc/vsftpd.conf
a、修正上傳文件的權限:
這裡會有一個問題,默許狀況下的默許權限是 077 也就是對應Linux 中的700 計算規則是 linux 的權限 777 - local_umask
假如沒有設置local_umask 文件權限,會招致上傳之後的文件,我們無法經過服務器訪問(短少權限)
b、在配置文件末尾添加:
userlist_deny=NO userlist_enable=YES userlist_file=/etc/allowed_users seccomp_sandbox=NO local_enable=YES
c、設置上傳文件權限:
write_enable = YES
這裡假如不設置成YES 默許狀況下不允許上傳文件。
7、創立/etc/allowed_users
添加允許義務參加到文件中,
8、重啟服務
sudo service vsftpd restart
9、運用XFTP 測試銜接
運用XFtp 創立一個新的銜接,這裡需求留意選擇的協議ftp,端口是21,在填寫好賬號密碼之後,即可以銜接我們的服務器。
測試上傳文件:
這裡上傳了一個txt 文件,我們可以看到文件的權限是666,這裡次要就是由於我們設置了上傳文件之後的權限 local_umask.
二、Java FtpClient 完成文件上傳1、Maven 依賴
<!-- Apache工具組件 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> </dependency> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> </dependency>
2、創立FtpClient 對象近程銜接服務器
FTPClient ftp = new FTPClient(); //鏈接近程服務 ftp.connect("192.168.148.128", 21);
銜接後果可以debug 看到:
3、FtpClient 登錄服務器
ftp.login("uftp", "**"); //前往登錄後果形態 int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return ; }
我們可以經過判別replyCode 和replyString 來檢查用戶能否登錄成功!
4、修正文件上傳途徑和文件類型
//修正上傳文件途徑 ftp.changeWorkingDirectory("/home/uftp/images/"); //修正文件類型 ftp.setFileType(FTP.BINARY_FILE_TYPE);
5、上傳文件
//獲取上傳文件的輸出流 FileInputStream fileInputStream = new FileInputStream(new File("D:/123.jpg")); //把文件推到服務器上 ftp.storeFile("hello.jpg", fileInputStream);
上傳文件完成之後,經過檢查前往後果判別時分上傳成功
6、加入登錄
//加入登錄 ftp.logout();
以上步驟就是運用FtpClient完成了一次文件上傳操作。
三、運用Nginx 檢查服務器圖片1、nginx 配置文件
在server 中添加 圖片地址解析
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt)${ root /home/uftp/images; expires 7d; }
2、重啟Nginx
./nginx -s reload
3、檢查圖片
http://192.168.148.128/hello.jpg
總結:到這裡我們就完成了一個復雜的圖片上傳到服務器,並且展現的小demo,配置進程中次要碰到的問題是關於文件權限的問題,假如沒有設置vsftpd 中的配置文件中local_umask,即便我們成功上傳了文件,也無法運用nginx 停止閱讀,設置write_enable = YES 保證文件可以上傳。