nginx 安裝到Java程式碼上傳圖片利用ftp過程遇到的問題總結
第一次接觸伺服器的自己就是一個小白鼠,自然會遇到很多問題:
一、ftp連線不上
1.按照 https://blog.csdn.net/weixin_37525569/article/details/80839067 這篇部落格寫的步驟安裝ftp,可以直接連線上。二、上傳的圖片不在想要的路徑裡面
我的上傳圖片路徑是:/home/ftpuser/www/images/但是發現上傳的圖片老在ftpuser下面。
1.這個時候我發現我的資料夾沒有許可權
下面普及一下linux下的資料夾許可權問題:
1.d 表示資料夾,rwx表示許可權 你看一共三組 第一組是root許可權表示最高許可權對這個資料夾的操作許可權 第二組是普通使用者 第三組是其他三,ftpuser是普通使用者。
2. 所以許可權對應的是第二組的rwx ,結果全是---,表示什麼許可權也沒有。
3. -表示少了什麼: -wx,表示少了r許可權,就是read 讀的許可權。r-x,少了w,表示少了write 寫許可權。
4. 所以要為我建立的資料夾賦予許可權:
命令列:chmod 777 /home/ftpuser只是把 /home/ftpuser目錄的許可權設定為rwxrwxrwx
chmod -R 777 /home/ftpuser表示將整個/home/ftpuser目錄與其中的檔案和子目錄的許可權都設定為rwxrwxrwx
-rw——- (600) 只有所有者才有讀和寫的許可權
-rw-r–r– (644) 只有所有者才有讀和寫的許可權,組群和其他人只有讀的許可權
-rwx—— (700) 只有所有者才有讀,寫,執行的許可權
-rwxr-xr-x (755) 只有所有者才有讀,寫,執行的許可權,組群和其他人只有讀和執行的許可權
-rwx–x–x (711) 只有所有者才有讀,寫,執行的許可權,組群和其他人只有執行的許可權
-rw-rw-rw- (666) 每個人都有讀寫的許可權
-rwxrwxrwx (777) 每個人都有讀寫和執行的許可權
這個時候就可以把圖片放到正常的路徑下面了。
三、上傳的圖片為0M。
這個問題困擾了我很長時間:
1.首先在看SELINUX=disabled,不是 修改/etc/selinux/config
2.在Java程式上加入兩行程式碼
ftpClient.enterLocalPassiveMode();//主動模式 ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//二進位制檔案
這兩行程式碼怎麼 的位置必須放在設定圖片上傳位置的下面,下面是個小demo
@Test public void testFtpClient(){ //建立Ftp物件 FTPClient ftpClient=new FTPClient(); //建立ftp連線 try { ftpClient.connect("116.19X.XXX.XXX", 21); //登入ftp連線,用使用者名稱和密碼 ftpClient.login("ftpuser", "ftpuser"); //上傳檔案 //從本地讀取檔案 FileInputStream fileInputStream = new FileInputStream(new File("D:\\1.jpg")); //設定上傳到伺服器的位置 ftpClient.changeWorkingDirectory("/home/ftpuser/www/images/"); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); //1.伺服器端檔名2.上傳檔案的inputStream ftpClient.storeFile("lss.jpg", fileInputStream); fileInputStream.close(); //關閉連線 ftpClient.logout(); }catch (Exception e){ e.printStackTrace(); } }
(1)因為為port連線所以必須設定為主動模式。
(2)設定檔案型別為二進位制檔案
四,圖片上傳上去無法訪問
1.首先在nginx下的nginx.config下面看配置檔案是否有配置的路徑,按照綠色的配置
2.在html資料夾下加一個images資料夾
這個時候重新啟動nginx就可以訪問了