導航:首頁 > 文件類型 > ftp上傳相同文件名

ftp上傳相同文件名

發布時間:2024-09-28 10:38:12

Ⅰ FTP上傳時怎麼解決中文路徑和中文名稱

java上傳文件到ftp有兩種實現方式,一種是使用sun公司提供的sun.net.ftp包裡面的FtpClient,另一種是Apache組織提供的org.apache.commons.net.ftp包里的FTPClient,現在我來分別說下兩種實現方式。
sun的FtpClient:我們先來看如下代碼
public static boolean uploadFileBySun(StringBuffer fileContent,String server,String userName, String userPassword, String path, String fileName) {
FtpClient ftpClient = new FtpClient();
try {
//打開ftp伺服器
ftpClient.openServer(server);
//使用指定用戶登錄
ftpClient.login(userName, userPassword);
//轉到指定路徑
ftpClient.cd(path);
TelnetOutputStream os = null;
//新建一個文件
// os = ftpClient.put(new String(fileName.getBytes("GBK"), "iso-8859-1"));
os = ftpClient.put(fileName);
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(fileContent.toString());
bw.flush();
bw.close();
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
} finally {
try {
//關閉ftp連接
ftpClient.closeServer();
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}

代碼結束符!
正如上面的代碼,上傳文件分為六步,第一步,打開ftp伺服器,第二步,使用指定用戶名以及密碼登陸,第三步,轉到指定文件路徑,第四步,創建一個文件,第五步,往文件裡面寫東西,並關閉文件,第六步,釋放ftp連接。最後一步釋放ftp連接很重要,一般ftp伺服器連接數都是有限的,所以不管文件上傳成功或是失敗都必須釋放連接。上面這個例子上傳的文件是字元串文本,必須要提的是,如果上傳的字元串文本較長(我項目中上傳的文本大概在160kb上下),使用上面的方法可能會出現字元串丟失的情況,原因不明,可能跟緩存有關,所以如果文本較長,建議用戶使用位元組流。還有一個問題,如果要上傳的文件名是中文的話,上傳的文件名將是亂碼,亂碼問題我嘗試許多轉碼也解決不了,於是不得不使用下面的方法了。
Apache的FTPClient:
public static boolean uploadFileByApacheByBinary(StringBuffer fileContent,String server,String userName, String userPassword, String path, String fileName) {
FTPClient ftpClient = new FTPClient();
try {
InputStream is = null;
is = new ByteArrayInputStream(fileContent.toString().getBytes());
ftpClient.connect(server);
ftpClient.login(userName, userPassword);
ftpClient.changeWorkingDirectory(path);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(new String(fileName.getBytes("GBK"), "iso-8859-1") , is);
is.close();
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
if(ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return true;
}

代碼結束符!
Apache上傳文件的步驟跟sun的實現基本一致,只是方法名有些區別而已。在這里我將字元串文本轉換成了ByteArrayInputStream位元組緩沖流,這是個很有用的東西,常用來進行字元到流的轉換。轉換成位元組上傳就不會出現丟失文件內容的情況了。ftpClient.storeFile(new String(fileName.getBytes(「GBK」), 「iso-8859-1″) , is)這句代碼將is輸入流的東西上傳到ftp伺服器的fileName文件中,在這里我們對fileName文件名進行了轉碼,經測試中文沒有亂碼(ftp伺服器使用的是window,其他平台未測試),而如果我們使用sun的ftp實現,即使文件名進行這樣類似的轉碼,依然是亂碼。

Ⅱ C# FTP上傳文件同時更改該文件的名稱

_ftpClient.ChangeDirectory(IniConfig.PSBCUploadFtpHomePath);
首先選好ftp伺服器文件夾作為上傳路徑
_ftpClient.Files.Upload(Path.GetFileName(f), f);
然後用Upload方法上傳,Path.GetFileName(f)就是上傳的文件名,可以更改。如果為了文件名唯一性,可以在上傳前先判定伺服器里是否有同名文件,
foreach (var file in _ftpClient.Files){
xxxxx

}
有同名就加個序號或者其他方法

閱讀全文

與ftp上傳相同文件名相關的資料

熱點內容
如何從殺毒軟體裡面恢復出文件 瀏覽:972
越獄iphone如何備份 瀏覽:124
蘋果四S萬能鑰匙怎麼破不開 瀏覽:603
網路列印機共享怎麼連接 瀏覽:313
fme系統找不到指定文件 瀏覽:301
iphoneid和密碼忘了怎麼辦 瀏覽:238
蘋果電腦優盤里的文件如何加密 瀏覽:284
word標題名和文件名一致 瀏覽:957
excel修改後的文件保持了怎麼恢復 瀏覽:340
社保網路認證怎麼弄 瀏覽:92
蘋果手機怎麼傳數據到新手機相冊 瀏覽:50
5s升級ios92無服務 瀏覽:354
ubuntu翻譯工具 瀏覽:665
wifi安裝教程 瀏覽:398
蘋果有些qq文件打不開 瀏覽:139
微信分身圖片緩存在哪個文件 瀏覽:544
眾籌用什麼網站 瀏覽:1
天馬座的幻想版本 瀏覽:536
微雲保存文件圖片沒有了 瀏覽:236
如何把excel表格圖片導出到文件夾 瀏覽:387

友情鏈接