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.
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完成了一次文件上傳操作。
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
