您在這裡

中文檔名文件無法上傳

braveht's 的頭像
braveht 在 2006-04-21 (週五) 14:22 發表

這應該是PHP系統都有的問題吧....
不知道有沒有人有破解的方式呢?

有破解的必要嗎?

盡量還是規定使用者用英文檔名,不然總是會出問題的XD

不過我這兒沒有,因為我把所有上傳的檔名都自動序號過了
不過因此也沒有了title

詳細的解決方式,我還得trace一下code才能告訴大家

--
from open mind to open source~

經過不斷的try/error之後,
試出一個辦法...

不保證完全OK,希望有好心人士幫我看看這樣改會不會造成什麼風險,
因為我實在不是一個PHP高手,
而且整個過程完全是靠try/error出來的,沒什麼邏輯可言....

我的方法是:在file.inc裡改兩個地方

1. 將
$file->filename = trim(basename($_FILES["edit"]["name"][$source]), '.');
改成:
$file->filename = trim($_FILES["edit"]["name"][$source]);
2. 在
unset($_SESSION['file_uploads'][is_object($source) ? $source->source : $source]);
之前加一行:
$dest = str_replace('+',' ',drupal_urlencode($dest));

第一個沒有basename會有問題..hmm...你的server是不是架在windows上?
http://tw2.php.net/manual/en/function.basename.php
看起來像是basename造成中文檔名的問題~

basename在windows上會把所有的"\"之前都給去掉,但是big5編碼有些包含"\"的文字,便會出現問題了...

第二個,為什麼要加上str_replace把加號給換掉呢?不太知道你這樣做的原因呢..

還有,若不確定是哪邊出問題,用print $file->filename插在各處,應該會有幫助~

--
from open mind to open source~