[心得] 解決上傳中文檔名的偷雞摸狗之道
今晚的時間,都被我拿來處理中文檔名上傳而消磨掉了,還蠻佩服自己能夠不屈不撓的(
偶爾也要給自己讚美一下嘛),雖然其中有好幾次想要翻桌,不過幸好終於研究出方法,
不然真不敢想像憤恨關掉電腦後的我會是什麼模樣(大爆走?也許都不用睡了…)。
先是搜尋有關中文檔名上傳的資料,其中我試了 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.$filename);
總而言之,這個方法就是將使用者上傳以中文命名的資料,偷偷竄改成非中文的檔名
,然後再存放到伺服器上。要先說明的是,我寫的網頁是一個申請表單,上傳檔案是必填
欄位,而那個上傳檔案主要是給審核者看的。如果說,現在我要寫的是一個網路硬碟,使
用者將資料上傳後,因為程式改掉了檔名…(可以想像是什麼情況吧 XD)這樣想起來,
擅自竄改檔名還不是最佳解決之道呢。
ps. 文末要好好謝謝網路上眾多喜歡分享的朋友,還有總是默默給我指導的
php 手冊 XD。
--
‧‧‧http://towalking.blogspot.com/ [ 給自己一個交待 ]‧‧‧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.172.59.11
推
10/24 01:10, , 1F
10/24 01:10, 1F
→
10/24 01:21, , 2F
10/24 01:21, 2F
推
10/24 01:58, , 3F
10/24 01:58, 3F
推
10/24 11:24, , 4F
10/24 11:24, 4F
→
10/24 11:25, , 5F
10/24 11:25, 5F
→
10/24 11:26, , 6F
10/24 11:26, 6F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
151
156