[分享] 檔案上傳中文轉碼

看板PHP作者 (古銅色月亮)時間16年前 (2009/12/03 17:17), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
上傳中文檔名的檔案似乎要先用iconv()轉碼才能夠上傳: move_uploaded_file($_FILES["fileupload"]["tmp_name"], "../upload/".iconv("utf-8","big5",$_FILES["fileupload"]["name"])) 然而,要刪除上傳的中文檔案也是要再轉碼一次: unlink("../upload/".iconv("utf-8","big5",$_GET['upname'])) echo $_GET['upname']."<p>"; //顯示結果為正常檔名 echo iconv("utf-8","big5",$_GET['upname']); //顯示結果為亂碼 在此不禁有個疑問,以iconv()編碼過的檔名在資料夾開啟來都顯示正常, 這是因為系統本身會做編碼判讀的原因嗎~? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.32.57.244

12/03 17:56, , 1F
這是因為 OS 和 PHP 編碼不同的關係
12/03 17:56, 1F

12/04 01:38, , 2F
嗯..瞭解了~感謝~:)
12/04 01:38, 2F

12/04 14:31, , 3F
比較好的方式其實是分離...缺點少優點多
12/04 14:31, 3F

12/04 14:32, , 4F
原始檔名可以用unix時間戳記來命名
12/04 14:32, 4F

12/04 14:33, , 5F
然後將檔案名稱的檔名和副檔名分離後存於資料庫
12/04 14:33, 5F

12/04 14:33, , 6F
要下載時再取出來合成成原始檔名
12/04 14:33, 6F

12/04 14:37, , 7F
不過最主要還是看目的為何吧,要安全的話做法比較繁
12/04 14:37, 7F
文章代碼(AID): #1B5u8Z2y (PHP)
文章代碼(AID): #1B5u8Z2y (PHP)