sudo apt-get install vsftpdsudo useradd -d /home/uftp -s /bin/bash uftpsudo passwd uftpsudo mkdir /home/uftp/etc/vsftpd.conf 關鍵配置:
local_umask=022(上傳文件權限 644,避免默認 700 導致 Nginx 無法讀取)write_enable=YES(允許上傳)userlist_deny=NO / userlist_enable=YES / userlist_file=/etc/allowed_users / seccomp_sandbox=NO / local_enable=YES/etc/allowed_users 寫入允許用戶名(如 uftp)sudo service vsftpd restart<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId></dependency>
FTPClient ftp = new FTPClient();
ftp.connect("192.168.148.128", 21);
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return; }
ftp.login("uftp", "password");
ftp.changeWorkingDirectory("/home/uftp/images/");
ftp.setFileType(FTP.BINARY_FILE_TYPE);
FileInputStream fis = new FileInputStream(new File("D:/123.jpg"));
ftp.storeFile("hello.jpg", fis);
ftp.logout();
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt)$ {
root /home/uftp/images;
expires 7d;
}
./nginx -s reload 後訪問 https://IP/hello.jpg 即可看到圖片。
核心坑點:local_umask 決定上傳文件權限,未設置會導致 Nginx 403;write_enable=YES 必須開啟允許上傳。