今晚的時間,都被我拿來處理中文檔名上傳而消磨掉了,還蠻佩服自己能夠不屈不撓的(偶爾也要給自己讚美一下嘛),雖然其中有好幾次想要翻桌,不過幸好終於研究出方法,不然真不敢想像憤恨關掉電腦後的我會是什麼模樣(大爆走?也許都不用睡了…)。
先是搜尋有關中文檔名上傳的資料,其中我試了 php + javascript 的方法( google 一下就可以知道是什麼方法囉),然而不知道是我沒有完全瞭解程式的意思還怎樣,無論怎麼試都不成功。就在我打算狠下心讓使用者無法以中文檔名上傳資料的時候,也許是廣大的使用者群眾默默給我集氣的關係,我突然靈光乍現!
不知道這個方法有沒有人分享過了(我花了一整個晚上才想到,唉…):
$filename = $_FILES['project']['name']; //取得上傳檔案的檔名
$path = "../upload/"; //設定儲存上傳檔案的資料夾路徑
if ( ! is_dir($path)) //檢查是否已有資料夾,若沒有,自動建立資料夾
mkdir($path);
list($firstname, $secondname) = explode(".", $filename);
//$secondname為存取副檔名的變數
$newname = $applyNo.".".$secondname; //以表單編號(一串數字)為新檔名
// 將使用者上傳的檔案複製到對應的目錄
copy($_FILES['project']['tmp_name'],$path.$newname);
copy($_FILES['project']['tmp_name'],$path.$newname);
//原本應該是copy($_FILES['project']['tmp_name'],$path.$filename);
總而言之,這個方法就是將使用者上傳以中文命名的資料,偷偷竄改成非中文的檔名,然後再存放到伺服器上。要先說明的是,我寫的網頁是一個申請表單,上傳檔案是必填欄位,而那個上傳檔案主要是給審核者看的。如果說,現在我要寫的是一個網路硬碟,使用者將資料上傳後,因為程式改掉了檔名…(可以想像是什麼情況吧 XD)這樣想起來,擅自竄改檔名還不是最佳解決之道呢。
>>>>>>>>>>>>>>完整閱讀>>>>
ps. 文末要好好謝謝網路上眾多喜歡分享的朋友,還有總是默默給我指導的 php 手冊 XD。