程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java FtpClient 完成文件上傳服務

Java FtpClient 完成文件上傳服務

編輯:關於JAVA

Java FtpClient 完成文件上傳服務。本站提示廣大學習愛好者:(Java FtpClient 完成文件上傳服務)文章只能為提供參考,不一定能成為您想要的結果。以下是Java FtpClient 完成文件上傳服務正文


一、Ubuntu 裝置 Vsftpd 服務

   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 保證文件可以上傳。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved