1. 程式人生 > >【Java】解決FTPClient上傳中文目錄出現中文名亂碼問題

【Java】解決FTPClient上傳中文目錄出現中文名亂碼問題

Java中FTPClient上傳中文目錄、中文檔名亂碼問題解決方法
問題描述:

  使用org.apache.commons.net.ftp.FTPClient建立中文目錄、上傳中文檔名時,目錄名及檔名中的中文顯示為“??”。

原因:

  FTP協議裡面,規定檔名編碼為iso-8859-1,所以目錄名或檔名需要轉碼。

解決方案:

1.將中文的目錄或檔名轉為iso-8859-1編碼的字元。參考程式碼:
複製程式碼 程式碼如下:
 String name="目錄名或檔名";
   name=new String(name.getBytes("GBK"),"iso-8859-1");// 轉換後的目錄名或檔名。


2.設定linux環境變數

複製程式碼 程式碼如下:
export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"

例項:


複製程式碼 程式碼如下:
public boolean upLoadFile(File file, String path, String fileName) throws IOException {
        boolean result = false;
        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient.connect(confService.getConfValue(PortalConfContants.FTP_CLIENT_HOST));
            ftpClient.login(confService.getConfValue(PortalConfContants.FTP_CLIENT_USERNAME), confService
                    .getConfValue(PortalConfContants.FTP_CLIENT_PASSWORD));
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);


            // make directory
            if (path != null && !"".equals(path.trim())) {
                String[] pathes = path.split("/");
                for (String onepath : pathes) {
                    if (onepath == null || "".equals(onepath.trim())) {
                        continue;
                    }


                    onepath=new String(onepath.getBytes("GBK"),"iso-8859-1");                    
                    if (!ftpClient.changeWorkingDirectory(onepath)) {
                        ftpClient.makeDirectory(onepath);
                        ftpClient.changeWorkingDirectory(onepath);
                    }
                }
            }


            result = ftpClient.storeFile(new String(fileName.getBytes("GBK"),"iso-8859-1"), new FileInputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ftpClient.logout();
        }
        return result;
    }


    

相關推薦

Java解決FTPClient中文目錄出現中文名亂碼問題

Java中FTPClient上傳中文目錄、中文檔名亂碼問題解決方法 問題描述:   使用org.apache.commons.net.ftp.FTPClient建立中文目錄、上傳中文檔名時,目錄名及檔

springbootspring-boot檔案MultiPartFile獲取不到檔案問題解決

1.現象是在spring-boot里加入commons-fileupload jar並且配置了mutilPart的bean,在upload的POST請求後,發現multipartRequest.getFiles=null,有點奇怪,查了文件資料才解決。

Mac之svn文件命令

ant ack 提示 gin http commit add https svn 創建文件後,進入文件夾下: ①先checkoutsvn地址: svn checkout https://xxxx:0000/svn/CM_B2B_Document/06_Testing

Java解決Gson解析資料時int自動轉化為double問題

Gson可以將json字串轉換時, 原json字串中的int , long型的數字會預設被轉換成double型別 , 導致數字會多一個小數點 , 如 1 會轉成 1.0。 解決方法: 只需將Gson gson = new Gson();換成下面這個  Gson gson = n

解決FTPClient檔案為空,顯示0位元組

JAVA使用FTPClient上傳檔案時總是為空 分析:Port模式,是客戶端C在本地開啟一個埠等服務端S去連線建立資料連線;而Pasv模式就是服務端S開啟一個埠等待客戶端C去建立一個數據連線。 解決:預設情況下,FTPCLIENT用的是port模式,可以在FTPCLIE

FastDFSmaven專案圖片到FastDFS伺服器

一:前言   FastDFS伺服器的搭建都是運維人員完成的,開發人員只需知道tracker伺服器IP地址和埠號即可 二:環境裝備   1.為了程式設計成員在應用程式中使用FastDFS,官網提供了java版的客戶端   但是中央倉庫中沒有,我們可以下載fas

循序漸進學.Net Core Web Api開發系列5:檔案

系列目錄 一、概述 本篇介紹通過.NET core WebApi實現檔案上傳。 二、Controller端程式碼 直接上程式碼: [Route("api/files")] [Produces("application/json")] public

Java下載網路的圖片並儲存到本地目錄

import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; impo

php檔案的與下載

php檔案的上傳與下載其實不難的,就那麼的幾行程式碼,比起JSP的要簡單得多,具體可以參考:《【Servlet】利用Servlet3.0標準與JSTL表示式實現檔案上傳系統,支援圖片上傳後顯示》(點選開啟連結);《【Jsp】把Java寫到Respond輸出流裡面供使用者下載

Git從本地到github的文章顯示圖片的方法

雖然這段時間一直在git上上傳程式碼或者是文章,但是還沒有試過在github上面上傳圖片,前兩天寫了一篇部落格,裡面有很多插圖,就想著是不是可以一塊上傳到github上面去呢? 中間失敗的各種方法就不贅述,下面說一下成功的兩種方法: 方法一 : 將圖片單獨

Javaform表單提交中文亂碼

如果框架沒有支援的話,自己在Java 後端做一下轉碼操作也可以解決: // new String(byte[] target, String characterSet) 將目標位元組陣列t

Java使用Notepad+編輯帶中文Java檔案後,編譯的問題

使用Notepad+編輯帶中文的Java檔案在編譯後會出現如下的error messaget:\>javac Employee.java Employee.java:9: error: unmappable character for encoding GBK /

DongleSSH商品圖片

       利用SSH框架,通過模型驅動將商品資訊自動帶回,但是由於圖片儲存的路徑,故而需要先將圖片上傳到伺服器,然後轉換成伺服器中的路徑。        在web頁面上上傳檔案到伺服器,而由於新增商品不僅僅是儲存圖片,還要獲取商品名稱、價格、型別等等資訊,故而採用表單的

SpringMVC解決@ResponseBody註解返回中文亂碼

@ResponseBody @RequestMapping(value="/toPerBirthday.do") public String getIndexPerBasicInfo(HttpServletRequest request, HttpServletResponse response,M

java解決httpurlconnection 亂碼

拿到流後如果不指定讀取編碼方式,就像下面這樣: InputStream is = conn.getInputStream();//拿到輸入流 InputStreamReader isr = new InputStreamReader(is); BufferedRea

Java 劍指offer(39) 陣列中出現次數超過一半的數字 《劍指Offer》Java實現合集 《劍指Offer》Java實現合集

本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集   題目    陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1, 2, 3, 2, 2, 2, 5, 4, 2}。由於數字2在陣列中出現

Java檔案及下載、限制檔案大小

1、後端部分       Controller程式碼 // 上傳 @PostMapping("upload") @ResponseBody public Result upload(MultipartFile files, I

java刪除到伺服器的臨時檔案

刪除上傳到伺服器的臨時檔案 前言          此篇博文主要說明此前在解析excel檔案中上傳的excel檔案進行一個處理。 說明 伺服器 resin伺服器 程式碼操作 進行的程式碼實現全在js

Python小白向PyPI程式碼出現問題,報401或者410如何解決(主要是的URL不正確)!

參考:《Head First Python》向PyPI上傳程式碼一章節環境:Win7+Python3.5      作為一個剛接觸Python的一名小白,在閱讀《Head First Python》向PyPI上傳程式碼一章節時,上傳遇見了URL不對,各種度娘,發現沒有太多關於

利用FTPClient的檔案中中文名字亂碼解決辦法

新增下面這一段: if (FTPReply.isPositiveCompletion(ftpClient.sendCommand( "OPTS UTF8", "ON"))) {// 開啟伺服器對UTF-8的支援,如果伺服器支援就用UTF-8編碼,否則就使用本地編碼(GBK)