SugarCRM 中文檔名上傳問題

請問有沒有人碰到中文檔名上傳的問題...

我在文件的地方上傳中文檔名後...

會出現這樣的訊息

ERROR: can't move_uploaded_file to cache/upload/35e1dd2e-386e-47c4-02c5-44d43f40043b長壽花.doc


在中文檔名前又多了一堆東西...

這個跟編碼有關係嗎?現在是用unicode

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1926

評論

  • edited 八月 2006
    哪個版本?基本上中文在很多地方都會發生問題,4.5 版號稱要解決這方面的狀況,我不是很確定細節。
  • edited 八月 2006
    我抓網站上的 4.2.1b有這問題

    而4.5 Beta 2 ..我確定也有同樣的問題..兩個版本我都有裝...

    妙的是,上傳英文檔名也是會在原本的檔名多一串東西,但是卻可以上傳..但是要下載英文檔名的話 也會變成類似這樣 5e1dd2e-386e-47c4-02c5-44d43f40043bfilename.doc

    是不是他在上傳的過程中一定會去改檔名..-_-"
  • edited 八月 2006
    它是一定會改檔名,因為要避免檔名重複問題;中文檔名出狀況是因為 PHP 無法以中文檔名讀取指定位置,這個狀況一般在設計時就常常發生。
  • edited 八月 2006
    所以看起來暫時還沒辦法...我看到有人討論到 改 PHP mbstring這地方,會有幫助嗎
  • edited 八月 2006
    需要調整存取檔案的方式,也許跟 htmlentities() 或 html_entity_decode() 比較有關系。
  • edited 八月 2006
    我有看到一個網友的文章

    http://blog.tmu.edu.tw/cyhuang_4/001565.html

    上面有PHP中文檔名的處理方法..可是裡面有JAVAscript

    是不是拿來改到 include/upload_file.php 這個檔案就可以..

    可是我對PHP不熟,JAVA的script可以放到.php 內嗎
  • edited 八月 2006
    Javascript != Java

    Javascript 要放進去的話可能得改很多地方,也許針對裡面進行檔案搬移動作的方法(Method)進行除錯會快一些。
  • edited 八月 2006
    我目前使用的版本為
    SugarSuite421a.tar.gz

    上傳後的檔案的確會先出現一長串的英文+檔名沒錯
    不過這並不影響我下載檔案,我想這個設計是為了要對文件版本控制吧
    因為它有文件版本控制的功能,也就是說有可能使用者會上傳相同檔名的檔案到裡面

    我在上傳下載中文檔名沒有問題,這個版本我修了幾個地方,以下提供您做參考
    01.修改程式原始碼(無法搜尋中文檔名的修正)
    sugar/modules/Home/UnifiedSearch.php ,找到下面這行:
    if(isset($_REQUEST['query_string']) && preg_match("/[\w]/", $_REQUEST['query_string']))
    
    改成:
    if(isset($_REQUEST['query_string']))
    

    02.修改/etc/php/apache2/php.ini
    [
    [mbstring]; language for internal character representation.
    ;mbstring.language = Japanese
    
    ; internal/script encoding.
    ; Some encoding cannot work as internal encoding.
    ; (e.g. SJIS, BIG5, ISO -2022-*)
    mbstring.internal_encoding = BIG5
    
    ; http input encoding.
    mbstring.http_input = auto
    
    ;  http output encoding. mb_output_handler must be 
    ; registered as output buffer to function
    mbstring.http_output = utf8
    
    ; enable automatic encoding translation accoding to
    ; mbstring .internal_encoding setting. Input chars are
    ; converted to internal encoding by setting this to On.
    ; Note: Do _not_ use automatic encoding translation for 
    ;       portable libs/applications.
    ;mbstring.encoding_translation = Off
    
    ; automatic encoding detection order .
    ; auto means
    mbstring.detect_order = auto
    
    ; substitute_character used when character cannot be converted
    ; one from another
    mbstring.substitute_character = none;
    
    ; overload(replace) single byte functions by mbstring functions. 
    ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
    ; etc. Possible values are 0,1,2,4 or combination of them.
    ; For example, 7 for overload everything.
    ; 0: No overload
    ; 1: Overload mail() function
    ;  2: Overload str*() functions
    ; 4: Overload ereg*() functions
    ;mbstring.func_overload = 0
    

    我這台主機是Debian Sarge 3.1 使用apache2.0.54+php4.3.10-16+Mysql4.0.24-10

    資料庫的版本似乎不是很大的重點,重點在於php.ini的設定
  • edited 八月 2006
    mm..有,我有在另一篇文章讀到您的這部分修改..

    我有照著改.可是還是沒用..不過我想,可能跟OS也有關係..因為我是跑在 Windows + IIS上面,發現兩位都跑在linux上面..~我想我可能要得先練練linux才可以。
Sign In or Register to comment.