首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java FTP 文件上傳完整實戰:vsftpd 搭建 + FtpClient 代碼 + Nginx 圖片訪問

     編輯:Java 綜合教學

第一部分:Ubuntu 搭建 vsftpd 服務

  1. sudo apt-get install vsftpd
  2. 創建用戶:sudo useradd -d /home/uftp -s /bin/bash uftp
  3. 設置密碼:sudo passwd uftp
  4. 創建目錄:sudo mkdir /home/uftp
  5. 編輯 /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
  6. 創建 /etc/allowed_users 寫入允許用戶名(如 uftp)
  7. sudo service vsftpd restart
  8. 用 XFTP 驗證連接(協議 FTP,端口 21)

第二部分:Java FtpClient 實現上傳

<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();

第三部分:Nginx 配置靜態圖片訪問

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 必須開啟允許上傳。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved