2011-05-04 79 views
0

我有學習門戶(LMS),我將上傳文檔,圖像,視頻等來創建內容。如果上傳的文件有中文名稱,則不會上傳。而是上傳垃圾名稱的損壞文件。如何在PHP中上傳帶有中文名稱的文件?

例如,我試圖上傳一個名爲的文件,地球科學.jpg。但在服務器上,我將此文件作爲發送給我。上傳的文件也在服務器中損壞。

我想讓這個文件在服務器上獲取同名的上傳文件。 因爲我想搜索這些文件並稍後重新用於創建內容。

僅供參考: 我在Windows XP上安裝了XAMPP服務器。 已安裝中文,韓文和日文語言包。

感謝您的回答。

+0

您知道如何在服務器上創建此文件嗎?你的PHP代碼在哪裏? – 2011-05-04 07:43:53

+0

我可以確認它不是你的操作系統。我安裝了相同的操作系統和CJK。這可能是你的PHP腳本/環境。 – 2011-05-04 09:01:37

回答

3

AFAIK ntfs無法處理文件系統上的某些字符。我會建議以通用名稱存儲文件。

例如,您可以創建一個包含兩列的表:名稱和文件,作爲保存原始名稱的名稱,以及設置類似md5(名稱)的文件。

+1

你試過了嗎?我剛剛做了,它的工作。地球科學.jpg是一個非常有效的NTFS文件名。 – 2011-05-04 07:43:04

+0

我目前不是贏家用戶。但是你能否確認它的跨平臺兼容性?可能不會。與客戶相同的問題是,將一個名爲'--foobar.jpg'的文件上傳到Linux環境(曾嘗試刪除這樣的文件?)) – Flask 2011-05-04 07:48:10

+0

與什麼平臺兼容?我在WindowsXP x86上運行它。我不知道WindowsXP運行在哪個平臺上。我猜測安騰有Windows? – 2011-05-04 08:58:52

0

確保顯示錶單的頁面以utf-8或更高版本呈現,通常這是作業,您還可以選擇使用表單元素的accept-charset屬性來指示發佈的數據作爲指定的字符集發送。

不知道是否這一切都會做的工作,讓我知道。

+0

我改變了utf-8中的所有頁面,但沒有成功 – Pallava 2012-11-28 09:23:02

1

如果您需要名稱來搜索它,請使用數據庫來存儲名稱信息和文件位置,並使用您自己的約定來保存該文件。

// sql entry 
original name = 地球科學.jpg 
path = /some/place/1.jpg 

當您搜索使用分貝找到一個給定的文件名稱和位置。當構建圖像存儲解決方案時,分離存儲邏輯不僅僅是命名問題,而且還涉及在文件夾中積累的文件數量方面的限制/考慮因素。

0

我想你可能想使用一些數據庫解決方案,特別是當你以後需要搜索文件時。有了數據庫,您可以避免I/O開銷。

0

我想你必須先學習/理解文件中的字符集,然後才能確定如何處理上傳。恐怕我不太熟悉非歐洲字符集,也不知道哪些字符使用最廣泛。

UTF-8應該是一個安全的選擇,可以處理幾乎所有你想要拋棄的東西。有一些相關信息對於我最近在博客中撰寫的帖子配置應用程序很有幫助:How to Avoid Character Encoding Problems in PHP