測試環境:
Ubuntu 6.10
apache2
php5
postgresql 8.1
Drupal 5.1
我不知道真正解決問題的key point在哪
但確實可以傳中文檔名,而且上傳到server上也是中文,下載也沒問題
先post整個過程,希望板上同好,在try的時候可以協助找出問題點
1.修正postgresql的client端語系
a.先確認資料庫的編碼為UTF8
b.修改資料庫的client端連結屬性
修改/etc/postgresql/8.1/main/postgresql.conf
加入下面這行client_encoding = utf8
存檔後重新啟動postgresql
(註:mysql好像也有類似的設定,請自行詢問google大神囉)
做到這裡,上傳但還沒送出node前,會顯示正確的中文檔名(但送出後檔案名稱仍不正確)
2.修改drupal預設的檔案存取方式(這應該是問題所在)
修改drupal目錄下/includes/file.inc
找到所有用basename(xxx)包起來的函數
用底下這個函數取代urldecode(basename(drupal_urlencode(xxx)))
(註:檔案內有一些變數也叫$basename,請一個一個看仔細,不要取代錯,做錯恕不負責XD)
存檔...完成!
然後就可以快樂的用中文檔名上傳了~
提供給各位參考...
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
這個應是basename(dirname)無法處理UTF-8中文字 的問題,建議以自訂function 替換,upload & IMCE 模組均有此問題
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
如果只是單純的改 basename function 似乎不夠,
在 file_copy() 這個涵式裡面還有一些地方要改的, 主要是 $dest 要改成 UTF8 編碼,
使用的是 iconv("UTF-8","BIG-5",$dest使用的 ) 這個涵式
附上檔案給大家參考
目前測試過中文檔案上傳下載都沒有問題,
重覆上傳的檔名, 也會在結尾加上一個數字counter
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
很抱歉, 前一個檔案因為只有在 local 測試, 所以有一些問題.
這個版本有 remote 測試過了. 但是只能適用在 "管理"->"網站設定"->"檔案系統" 的選項是公開的 (Public),
隱藏的部分在下載的地方還有問題, 持續追蹤中.
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
能不能弄個更簡單的方案協助一下我們這些只會用、不會寫、也不太敢改的人?
你我皆番人。
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
php 5.1.6 function basename not suport chinese file name under windows
http://drupal.org/node/124785
這是已知的問題, 解決的方法
1. 用 linux 架站
or
2. 用 drupal 4.7 架站
or
3. 等新版 php 出來吧 !
Re:
請問
剛剛試了一下patch
環境:Windows Server 2003 SP2+Appserv 2.48(Apache:2.0.59 PHP:4.4.5)+Drupal 5.1
建立內容時 可以上傳中文檔名(看server上也是中文檔名)
但是點選連結時(看Firefox狀態列 檔案連結是http://ip/drupal/files/D:/www/drupal/files/%E5%80%8B%E4%BA%BA%E8%B3%87%E...)
路徑不對
會出現
Forbidden
You don't have permission to access /drupal/files/D:/www/drupal/files/個人資通安全ä¿å¥æ‰‹å†Š.pdf on this server.
但按右鍵鏈結另存新檔 可以存檔
似乎還是不行
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
謝謝大家
這一兩天將appserv升級到 2.5.8(php:5.2.0)之後
初步試驗的結果ok
終於解決長久來的問題
又增強了跳船到drupal的決心
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
您好
請問您是如何解決的呢?
可否說明一下呢
謝謝您了
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
上面maisonchen有提供patch
下載回來解開 copy到drupal目錄底下的inculudes目錄下 (記得先將原來的檔案改名備份起來)
就這樣
其實我們因為沒有多餘的機器 所以沒法裝linux
再來不想Drupal 4.7
所以最後剩一條路就是升級php
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
sorry!今天再試的結果發現
當上傳中文檔名時 第一次會失敗(路徑會錯誤)
必須回到編輯中將原本檔案刪除 再從新上傳
第二次就正常了
因為這樣
所以上傳的檔名後面都會加上一個數字
這就要請教大家了
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
我也有此問題, 上傳時 看起來還是正確的URL
等到 node Submit 後, 連結在 http://Server/files/ 後面就多出 檔案存放的絕對目錄
例如 http://Server/files/C:/Program files/xampp/drupal/files/檔案.DOC
真傷腦筋 . 也是將附加檔案刪除,再傳一次就會產生正確的URL 了!
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
我在linux的系統中測試仍有問題,確定是php的basename函數問題
php的版本為 5.2.0-8,我對include/file.inc做了個自訂的function
把原本的file.inc備份,下載本檔案之後覆蓋掉原本的就可以使用
--
from open mind to open source~
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
試驗結果
在windows下還是有問題
(d:\xampplite\tmp\xxx.tmp 無法複製)
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
我的使用經驗
在MS Windows以Xampp架設,中文檔名會出問題
在Linux上架設(Debian apt-get),中文檔名OK,我用使用網芳讀取網頁目錄,編碼也是OK的(UTF-8)
不過,我亂玩了幾個模組後,所有的字就變亂碼了,所以還是建議用英文檔名上傳,不然的話就是得小心模組的使用
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
官網有一個模組
可以將您的中文檔名翻譯成英文檔名
http://drupal.org/project/transliteration
請問 現在上傳 中文檔名 還是沒更好的解決方法嗎
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
請問我用這個patch之後
http://drupaltaiwan.org/forum/20070409/1096#comment-2999
可以上傳中文檔名
也可以顯示
但是刪除檔案有問題
文章裡的檔案連結沒了
但是srever端的檔案還在
請問有辦法解決嗎?
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
:%s/basename(\(.*\));/urldecode(basename(drupal_urlencode(\1)));/g
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
這是...要加在哪?
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
這行是打給 vi 看的。
vi 是一款文字編輯器。
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
哦,懂了,在vi編輯檔案時輸入指令,可以置換這些字元
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
一樣的問題,中文檔名在Drupal 6也不行了。有沒有解決方案?
我這裡試著改改看,雖然我的php功力趨近於零...
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
啊呀,cjh829的方法可以用耶,上傳下載都可以。
我的環境是Cent OS 5.1,沒update過php與mysql。
順便附上改好的檔案。<--不能用別找我 :P
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
可以參考下面file.inc的修改方式, 測試過是OK的.
http://drupalchina.org/node/5292
file.inc修改兩個地方就可以
第一個地方,管DB文件名字的
原本是: $file->filename = file_munge_filename(trim(basename($_FILES['files']['name'][$source]), '.'), $extensions);
修改後:$file->filename = file_munge_filename(trim($_FILES['files']['name'][$source], '.'), $extensions);
第二個地方,管上傳到Server的文件名稱
原本是:if (!move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->filepath))
修改後:if (!move_uploaded_file($_FILES['files']['tmp_name'][$source],iconv("UTF-8","BIG-5",$file->filepath)))
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
詢問"無法複製所選擇的檔案 ,因為沒有該名稱的檔名存在,請確認你提供的是正確的檔案名稱。"
我有測試兩台主機~一台改了上面的部份就不會秀上面的訊息,一台會…
因為主機語系嘛
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
webfm模組好像就不能使用這樣的方式來解決了~
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
關於中文檔名上傳下載,我是參考版上的解決方法及
同樣我也出現刪除時無法刪除server的檔案
我有找到一個方法提供給各位參考嚕!如果在中文檔名上傳下載用的方法和我一樣刪除檔案的方法就是如下
(不同者不保證成功,也許可在相同位置程式碼上寫法作微調,請自行測試)
解決方法:
1.上傳下載中文檔名解決方法:
是採用j大的方法,引述如下:
第一個地方,管DB文件名字的
原本是: $file->filename = file_munge_filename(trim(basename($_FILES['files']['name'][$source]), '.'), $extensions);
修改後:$file->filename = file_munge_filename(trim($_FILES['files']['name'][$source], '.'), $extensions);
第二個地方,管上傳到Server的文件名稱
原本是:if (!move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->filepath))
修改後:if (!move_uploaded_file($_FILES['files']['tmp_name'][$source],iconv("UTF-8","BIG-5",$file->filepath)))
如此,上傳下載為中文檔名沒有問題,但刪除案時,資料已刪除,但server端上的檔案依然存在,所以還要在一個地方修改一下
修改./modules/upload/upload.module 裡的
將原本file_delete($file->filepath);
皆改為file_delete(iconv("UTF-8","BIG-5",$file->filepath));
就可刪除server端的檔案
本人目前使用的版本為6.17
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
您好~~像可以del server端的資料是不是需使用upload模組所上傳的檔案才有效~
如果是使用cck 的 field_files上傳檔案而不是使用upload模組的就無效了?
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
我是沒有測試過,不過照邏輯思考,沒有用到upload模組的話那麼應該就沒有效了
要找出cck的fidld_files他上傳檔案的模組是哪一個再作修改嚕!
原則上就是要把有關刪除路徑檔名的語系改成系統看的懂的語系他才可以找的到對應的檔案刪除
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
嗯~了解~~那我來找找…
還有我如果上傳的是全中文的話"無法複製所選擇的檔案 ,因為沒有該名稱的檔名存在,請確認你提供的是正確的檔案名稱。"會一直出現這訊息~
但如果檔案是數字和中文的檔名上傳檔案就不會出現上面的訊息~想詢問是什麼問題導致~謝謝
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
所以在upload的function上傳的路徑也要更改語系,他才能辦識檔案,進而執行上傳動作
大致上要改的地方是upload(上傳的檔案檔名、及進到資料庫的路徑),unlink(刪除實體檔案)
不然原本是c:/drupal/你好.jpg在系統看來路徑都會變成c:/drupal/ (檔名變空白) 或 c:/drupa/□^&■ (亂碼狀態)
就會找不到檔案
而本來他就可以辨識英文和數字若你是中文數字混合他則會去掉中文(無法辦識的部份)留下數字如:
c:/drupal/你好123.jpg 上傳 他自動將檔名改成123.jpg,所以還是可以上傳但檔名就不是你原來的樣子
這是我用upload遇到的情形,在其他上傳模組應該也是差不多所以就針對我說的那幾個部份作修改看可不可以嚕
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
感謝大大的指導,小弟的問題已解決~~
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
感謝大大的指導,小弟的問題已解決~~
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
試用了各種 patch,還是覺得 hom 兄製作的 Upload_ch 比較好用~
http://drupaltaiwan.org/module/upload_ch
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
想詢問~想使用upload_ch
但找不到hom所說的
"所以另外開發用來作為計數器的 api 模組 => sequence"
不知是放那裡~能下載到呢~謝謝
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
http://drupaltaiwan.org/module/upload_ch
您要的模組在一開頭 hom 兄的附加檔案裡面有~
我是用下面兩個模組
sequence-6.x-0.1-dev.zip
upload_ch-6.x-0.3-dev.zip
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
silaslin 您好~~謝謝你…
我有使用hom兄提供的。但是啊我下載檔案時,發現都只秀附檔名,而檔案名稱沒出來
而且上開始上傳上去有檔案完整名稱~後來變以上顯示
ttp://xxx.xxxcom.tw/web/file/download/43/.doc
在settings/upload_ch和settings/file-system我都設一樣的路徑~(沒有使用使用/結尾)
看file資料表中的filename和origname欄位~origname有記檔案名稱而filename只記到附檔名
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: 解決中文檔名上傳/下載會出現錯誤 的問題
請教一下!下載時程式未給我中文檔名而是直接給我序列號檔案的連結網址,是否我哪裡設不好?
XP+Webmatrix+Drupal 6.2