Deskripsi Masalah:
Gunakan org.apache.cmmons.net.ftp.ftpclient untuk membuat direktori Cina dan mengunggah nama file Cina, direktori Cina dan nama file ditampilkan sebagai "??".
alasan:
Dalam protokol FTP, nama file ditentukan sebagai ISO-8859-1, sehingga nama direktori atau nama file perlu ditransfer.
Larutan:
1. Ubah direktori Cina atau nama file ke karakter kode ISO-8859-1. Kode referensi:
Salin kode kode sebagai berikut:
Name string = "Nama Direktori atau Nama File";
name = new string (name.getBytes ("gbk"), "iso-8859-1");
2. Atur kode salinan variabel lingkungan Linux sebagai berikut:
Ekspor lc_all = "zh_cn.gbk"
Ekspor lang = "zh_cn.gbk"
Contoh:
Salin kode kode sebagai berikut:
Public Boolean unggah (file file, jalur string, string fileName) melempar ioException {
Hasil boolean = false;
FtpClient ftpClient = ftpClient baru ();
mencoba {
ftpclient.connect (confService.getConfValue (portalconfcontants.ftp_client_host)) ;;);
ftpclient.login (confService.getConfValue (portalconfcontants.ftp_client_username), confservice, confservice
.getConfValue (portalConfcontants.ftp_client_password));
ftpClient.setFileType (ftpclient.binary_file_type);
// Buat direktori
if (path! = null &&! "". Equals (path.trim ())) {{{
String [] pathes = path.split ("/");
untuk (String OnePath: Pather) {
ifpath == null || ".
melanjutkan;
}
OnePath = string baru (onePath.getbytes ("gbk"), "iso-8859-1");
if (! ftpclient.changeworkingdirectory (onePath)) {
ftpClient.makedirectory (OnePath);
ftpClient.ChangeworkingDirectory (OnePath);
}
}
}
Hasil = ftpclient.storefile (string baru (filename.getbytes ("gbk"), "iso-8859-1"), fileInputStream baru (file));
} Catch (Exception e) {{
e.printstacktrace ();
} Akhirnya {
ftpclient.logout ();
}
Hasil pengembalian;
}