ftp重命名的時候文件消失
ftp
無法刪除文件的分析及處理辦法
1.文件被鎖定,例如access資料庫,正在被使用,因此不能被清除,解決辦法是登錄虛擬主機管理平台,進入到主機管理中,把空間運行暫停,然後等數十
秒鍾再清除就可以了。
2.文件的索引壞了。在一台有上百萬文件的伺服器中,很有可能發生這種情況,這類文件用上面的方式無法刪除。(解
決方法:聯系本司技術工程師,一般在24小時內解決)
3.用戶自己曾經對上層目錄設定了不能寫入的保護性操作,解決方法:登陸用戶控制後
台-自助管理-管理主機-打開相應目錄的寫操作許可權,然後用ftp登陸刪除
4.同一刻有其他人打開你的ftp在操作,此時必須是其他
ftp操作關閉才能刪除
5.文件名亂碼或有空格,用ftp重命名該文件然後刪除。
㈡ FTP下載文件丟失替換丟失
1.不會找回來了。因為覆蓋了
2,用ftp看你伺服器上的目錄下的index.html,後邊有更改時間,希望你能找到上傳的文件,也許是你著急傳錯了目錄
4.看看有沒有備份,如果有下載提取
3.更改備份的,如果沒有就要從你原始的源碼更改index.html重新做了
㈢ 關於FTPClient文件夾重命名的問題
環境描述:
1.服務端:採用serv-u11.3版本的伺服器管理工具作為ftp服務端
2.客戶端:採用FTPClient 1.4.1組件作為客戶端訪問ftp伺服器
我們在用FTPClient組件上傳文件時,當上傳的文件名為中文時,有以下幾種情況:
一、當沒有禁用serv-u服務端工具的上傳下載編碼時,即:
沒有將域限制和設置里默認的opts-utf8禁止,在:域限制和設置---FTP設置選項卡---全局屬性---高級選項---第三個多選框。
1.客戶端代碼中如果編碼為:UTF-8,那麼完全沒有問題,中文命名的文件可以正常上傳;參考以下代碼:
/**
* FTP上傳單個文件測試
*/
public static void testUpload() {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
try {
ftpClient.connect("此處填寫伺服器IP");
ftpClient.login("用戶名", "密碼");
File srcFile = new File("F:\\路由器配置.txt");
fis = new FileInputStream(srcFile);
//設置上傳目錄
ftpClient.changeWorkingDirectory("/admin/pic");
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");//這里設置編碼
//設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
boolean temp = ftpClient.storeFile(new String("路由器配置.txt".getBytes("UTF-8"),"iso-8859-1"), fis);//編碼轉換
System.out.println("temp-------"+temp);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客戶端出錯!", e);
} finally {
IOUtils.closeQuietly(fis);
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("關閉FTP連接發生異常!", e);
}
}
}
2.客戶端代碼中如果編碼為:GB2312,可以上傳,但是上傳的文件名為亂碼,代碼同上,改變紅顏色的字的編碼為GB2312即可;
二、一、當不選serv-u服務端工具的上傳下載的默認編碼時,即:
在:域限制和設置---FTP設置選項卡---全局屬性---高級選項---第三個多選框不要勾選時;
1.客戶端代碼中如果編碼為:UTF-8,文件不能上傳,代碼中,temp變數為false;
2.客戶端代碼中如果編碼為:GB2312,文件正常上傳,並且不為亂碼,代碼中,temp變數為true;
綜合上述:將ftp伺服器默認編碼禁用,並且客戶端代碼中以GB2312 編碼上傳並轉化較為合理,解決中文文件名的問題;另外,還有多種情況沒有舉例,大家可以測試一下,以便了解更為透徹。