Picture of Lin Jason
關於中文檔案上傳
by Lin Jason - Tuesday, 19 September 2006, 06:23 PM
 

不好意思請教大家,關於上傳中文檔名
依照http://mail.tkvs.ylc.edu.tw/plog/post/2/65作法
把clean_filename()都註解掉後,卻一直發生以下訊息
版本為1.6。以上傳『備忘.txt』為例
Warning: move_uploaded_file(C:\AppServ\www/moodledata/1/備忘.txt) [function.move-uploaded-file]: failed to open stream: Invalid argument in C:\AppServ\www\moodle\lib\uploadlib.php on line 231

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\TEMP\php74.tmp' to 'C:\AppServ\www/moodledata/1/備忘.txt' in C:\AppServ\www\moodle\lib\uploadlib.php on line 231

Picture of 辛 文義
回應: 關於中文檔案上傳
by 辛 文義 - Tuesday, 25 September 2007, 08:52 PM
 

【Moodle 中文檔名與目錄問題】

關於Moodle中文檔名的問題,我曾在1.5.x 修正過程式碼,主要方法是 remark cleanfilename 的地方。如此,Moodle 中就可以建立中文目錄,也可以上傳中文檔名的file。

但是會產生新的問題,影響甚鉅的是課程壓縮、備份時會發生錯誤而無法進行,似乎 zip 壓縮時無法識別中文檔名所致,因此如果要 Moodle 可使用中文檔名的話,似乎得先解決這個trouble。
Moodle 1.6.x 版,如果您想使用中文檔名,您只要在 config.php 中加入下列程式碼,即可( 感謝北京 唐偉 先生提供)
-----------------------------------------------------
$CFG->unicodecleanfilename = true;
-----------------------------------------------------
修改config.php 之後,確實可以使用中文檔名了,不用再去修改程式碼。 但是,執行課程備份(Backup),壓縮時會發生錯誤。
這個 bug 雖然已經 report to Moodle 了,更待有志之士徹底解決。
Picture of You Dah-Lih
回應: 關於中文檔案上傳
by You Dah-Lih - Tuesday, 19 September 2006, 10:18 PM
 
這個問題, 在下有個簡單(不改moodle程式)的方法, 可能也有先進們提過的:

先用7-zip將相關的中文檔名的檔案打包在一起, 以英文加以命名。
這樣子可保留所有文件的中文名稱, 也可必免修改程式後的可能意外狀況。
當然對於課程使用者而言, 解壓縮檔案成了必備的技巧。
Picture of Lin Jason
回應: 關於中文檔案上傳
by Lin Jason - Wednesday, 20 September 2006, 01:44 AM
 

謝謝大家的熱心回答,

  關於辛老師提到的,加入$CFG->unicodecleanfilename = true; 到config.php的方法,先前也使用過。不過仍得到相同錯誤訊息,似乎只要將cleanfilename給disenable 或 remark掉,都會有相同錯誤。

謝謝

Picture of CHEN GUU-IN
回應: 關於中文檔案上傳
by CHEN GUU-IN - Tuesday, 28 August 2007, 09:32 AM
 

我安裝moodle 1.8。照上述作法,只有資料夾可以用中文,檔名用中文,會說找不到檔案。

Picture of rfwu  
回應: 關於中文檔案上傳
by rfwu   - Monday, 24 September 2007, 09:43 PM
 
執行環境FreeBSD6.2, Apache22, PHP5.1.6, Moodle1.8.2
加入
$CFG->unicodecleanfilename = true;
可正常上傳中文檔名的檔案,但下載、壓縮(備份)與解壓縮經過修改一些程式碼後尚能正常運作,詳細說明如下http://plog.ptes.tp.edu.tw/post/97/549
Picture of 陳 怡杰
回應: 關於中文檔案上傳
by 陳 怡杰 - Friday, 6 April 2007, 04:01 PM
 

我也發生同樣的問題呢

會不會是因為架在 Window 平台的關係

Warning: move_uploaded_file(c:\appserv\www/moodledata154/1/OSCMS-平台比較表.pdf): failed to open stream: Invalid argument in c:\appserv\www\moodle154\lib\uploadlib.php on line 225

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\php167.tmp' to 'c:\appserv\www/moodledata154/1/OSCMS-平台比較表.pdf' in c:\appserv\www\moodle154\lib\uploadlib.php on line 225

Picture of rfwu  
回應: 關於中文檔案上傳
by rfwu   - Wednesday, 26 September 2007, 10:48 PM
 

我以WIndows XP, Xampp, Moodle1.8.2測試,會出現同樣無法上傳中文檔名問題即使已設定$CFG->unicodecleanfilename = true;

我想應該是Windows XP系統儲存中文檔名仍是以Big5存檔(Windows 2003與vista是否也是這樣沒試過),我修改一下lib/uploadlib.php第233行:

原來

if (move_uploaded_file($this->files[$i]['tmp_name'], $destination.'/'.$this->files[$i]['name'])) {

改為

if (move_uploaded_file($this->files[$i]['tmp_name'], iconv("UTF-8","Big5",$destination.'/'.$this->files[$i]['name']))) {

把輸入的檔名改成Big5則能順利上傳,當然瀏覽器編碼需改成Big5就能正確顯示中文檔名。

另一種驗證的方法直接把中文檔案複製到moodledata下,然後進入moodle看該檔案顯示出亂碼,當然瀏覽器編碼改成Big5就能正確顯示中文檔名。