2009-07-08 98 views
3

我有一個用戶上傳文件(pdf,word)等系統。問題是,外國用戶上傳阿拉伯文,中文,日文和系統文件名,能夠處理它們,將它們添加到數據庫中。PHP文件上傳 - 處理阿拉伯文/中文/日文文件名

當問題出現時試圖下載使用PHP文件:

$result = mysql_query($query) or die('Error, query failed'); 

list($filename, $type, $filesize, $filepath) = mysql_fetch_array($result); 

header("Content-Disposition: attachment; filename=$filename"); 

header("Content-length: $filesize"); 

header("Content-type: $type"); 

readfile($filepath); 

系統未識別的文件名,因而不會下載該文件。有什麼建議麼?

+0

你能打印一些有問題的文件名嗎?此外,用於存儲文件路徑的列的描述會很好。 Hunch是它沒有用正確的編碼插入。 – wai 2009-07-08 08:08:37

回答

1

有點複雜了高達PHP 5和Linux上傳Unicode名稱等(例如我是神的.doc),我懷疑各種操作系統不支持這樣的文件名

一種選擇是使用一些自定義來上傳他們名稱可能是{file-id} .doc,並將它們的信息(如原始文件名)存儲在數據庫表中,並且在下載頁面上可以修改包含該文件信息的表中存儲的信息的標題

3

我已經生成上傳的每個文件的唯一ID和重命名使用該文件避免這個問題ID,然後將ID,原始文件名和擴展名保存在數據庫表中。然後,您可以在表格中輕鬆查找所需的ID,檢索原始文件名(您可能會爲了便於閱讀而顯示)和擴展名,然後下載{id}。{extension}文件。

這還有一個額外的好處,即如果兩個文件以完全相同的名稱上傳,則後者上載不會覆蓋原始文件。

+0

使用相同的原則,作品像魅力:) – usoban 2009-07-09 15:35:05