乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關于用SVNWebClient提交中文文件名出錯的問題...

       ekylin 2006-08-09

      五一節(jié)回了老家一趟,于是就有了借口不更新自己的日志了,前幾天上來看到傳說一夢給我留了2條留言說用SVNWebClient上傳中文文件名的文件時,會出現(xiàn)亂碼。說老實話,當初推薦SVNWebClient和sventon時,也只當它們是純粹的基于Web的SVN瀏覽工具,所以也就沒有去測試這個中文上傳和中文注釋的問題。還好當初雖然不怎樣看好SVNWebClient,但也沒有將其卸載,于是就試了一把。好險,差一點就沒有測出來。傳說一夢也不說說清楚,是當文件名中出現(xiàn)奇數(shù)個中文的時候會出現(xiàn)亂碼,而偶數(shù)個時就OK,當然,我一開始試的就剛好是類似于"中文名.txt"子類的。于是殺到SVNWebClient的網(wǎng)站,在其論壇上看到已經(jīng)有人提了問題了,只是沒人問津,這不明擺著欺負中國人嘛!NND,只有發(fā)揚開源精神,自己動手了,盡管我是不會用SVNWebClient做SVN客戶端工具的,放著那么好的TortoiseSVN不用,不是自己找難受嘛。

      大體關于中文亂碼的問題,其實就是個編碼的問題,打開SVNWebClient的源碼,找到處理上傳的servlet:org.polarion.svnwebclient.util.Uploader.java,不是好好的嘛,用的是Jarkata的FileUpload,也做了utf8的轉碼,不應該有錯啊。在其轉換前后加了點調試代碼,發(fā)現(xiàn)沒有什么特別的東西。不過,聯(lián)想到以前用過的其它文件上傳組件,往往對中文的處理沒有考慮周全,正準備將其代碼也下載下來研究一把,突然發(fā)現(xiàn)其最新的版本是1.1,而SVNWebClient使用的是1.0,心想不要其已經(jīng)自動糾正了。下載新的版本,不過新版本還需要Jarkata的IO庫,一并下載,然后按照其文檔,改用最新的ServletFileUpload,重新編譯部署。這次亂得可比較徹底了,不管偶數(shù)個還是奇數(shù)個中文都是亂碼,不過,好在在轉換前后加了點調試,發(fā)現(xiàn)文件名在沒有轉換前竟然是正常的,于是幾次嘗試后,終于將其搞定。Uploader.java最新代碼如下:

       


      import  org.apache.commons.fileupload.servlet.ServletFileUpload;
      import  org.apache.commons.fileupload.disk.DiskFileItemFactory;


      public   class  Uploader {

          
      public   static  Map doPost(HttpServletRequest request, HttpServletResponse responce, String destinationDirectory, String tempDirectory) {
              Map parameters 
      =   new  HashMap();

              File tempDir 
      =   new  File(tempDirectory);
              
      if  ( ! tempDir.exists()) {
                  tempDir.mkdirs();
              }

              File destDir 
      =   new  File(destinationDirectory);
              
      if  ( ! destDir.exists()) {
                  destDir.mkdirs();
              }

              ServletFileUpload fu 
      =   new  ServletFileUpload( new  DiskFileItemFactory( 4096 new  java.io.File(tempDirectory)));
              List fileItems 
      =   null ;
              
      try  {
                  fileItems 
      =  fu.parseRequest(request);
              } 
      catch  (FileUploadException e) {
                  Logger.getInstance(Uploader.
      class ).error(e, e);
              }

              
      for  (Iterator i  =  fileItems.iterator(); i.hasNext();) {
                  FileItem fi 
      =  (FileItem) i.next();
                  
      if  (fi.isFormField()) {
                      
      try  {
                          parameters.put(fi.getFieldName(), fi.getString(
      " UTF8 " ));
                      } 
      catch  (UnsupportedEncodingException e) {
                          Logger.getInstance(Uploader.
      class ).error(e, e);
                      }
                  } 
      else  {
                      
      //  filename on the client
                      String fileName  =  fi.getName();
                      
      //  write the file
                       try  {
                          File uploadFile 
      =   new  File(destinationDirectory  +   " / "   +  FileUtil.getLastPathElement(fileName));
                          fi.write(uploadFile);
                          
      //  fi.delete();
                      }  catch  (Exception e) {
                          Logger.getInstance(Uploader.
      class ).error(e, e);
                      }
                      parameters.put(FormParameters.FILE_NAME, FileUtil.getLastPathElement(fileName));
                  }
              }

              
      return  parameters;
          }
      }

      另外,不懂或者不愿意去學Java的人就不要用SVNWebClient和sventon了,世界上有那么多的各種各樣語言編寫的開源工具,干嘛不選一個自己熟悉的呢^_^。

      Uploader.java下載
      Uploader.class下載

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多