作者jscorpio1 (我 天蠍)
看板PHP
標題[請益] move_uploaded_file 失敗
時間Sat Feb 23 12:23:05 2013
錯誤訊息如連結所示
http://ppt.cc/CTLy
部份程式碼如下
if($_FILES["myfile"]["error"] == UPLOAD_ERROR_OK)
{
$file=$_FILES["myfile"]["name"];
$upload_file = $upload_dir . $file;
echo "file is $file<br />";
echo "upload_file is $upload_file<br />";
$tmpname = $_FILES["myfile"]["tmp_name"];
echo "tmp_name is $tmpname<br />";
move_uploaded_file($_FILES["myfile"]["tmp_name"],$upload_file);
}
else echo $_FILES["myfile"]["error"];
作業系統是WinXP
網站是Appserv
實在是不知道到底哪裡有問題??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.62.170
1F:→ kerash:別用中文 02/23 12:32
2F:→ LaPass:檔名問題.... 02/23 13:07
3F:→ mervynW:xp 應該還是acsii, 所以走big5, 我想你程式大概用utf-8,爆 02/23 13:29
感謝以上幾位大大的回應
我有google到一篇文章說
utf-8 編碼網頁無法在 big5 系統正確處理中文檔名,
原因在於 move_uploaded_file() 不能處理 utf-8 中文編碼,
需利用 iconv() 函數作轉碼
我改了之後,也確實能用了。
但我又想到
1.utf8網頁上傳中文檔出現錯誤的這個問題,也同樣會發生在Linux上嗎?
2.使用iconv是治標 還是 治本 的方法呢?
如果是治標,那治本的方法是什麼?
※ 編輯: jscorpio1 來自: 140.120.62.170 (02/23 14:16)
4F:→ Bambe:基本上是看你的server系統用的是微軟系列還是linux系列 02/23 15:28
5F:→ Bambe:原po的問題在於說php將檔案丟到指定位置時,因為目的檔名的 02/23 15:31
6F:→ Bambe:編碼是utf8,系統無法解析,才會錯誤,因此才需要將檔名 02/23 15:31
7F:→ Bambe:iconv 至 big5 才能將檔案移動到正確的位置上 02/23 15:32
8F:→ Bambe:由於linux的編碼預設就是utf8,基本上不會有這個問題出現 02/23 15:33
9F:→ Bambe:當然,也要取決於你的網頁編碼用的也要是utf8就是了 :) 02/23 15:37
10F:→ jscorpio1:微軟系統是指Win Server也是嗎?還是單指WinXP/Win7? 02/23 17:45
11F:→ mervynW:win vista+好像就是 utf-8 了 02/23 18:07
12F:→ mervynW:不過不要用特殊符號(包涵中文字)還是正途 02/23 18:08
13F:→ buganini:1.原檔名放資料庫,檔名改成編號 02/23 20:24
14F:→ buganini:2. 丟掉windows 02/23 20:24
15F:→ buganini:不是windows版本的問題,是windows api分成兩套 02/23 20:25
16F:→ buganini:PHP用的那套讀出來會是big5 02/23 20:25
17F:→ buganini:用iconv不是個完美的方案,檔名有其他語言或有UAO就炸了 02/23 20:26
18F:→ Bambe:可以請教樓上大大給個完整的說明嗎@@之前曾經為了檔案系統編 02/23 23:09
19F:→ Bambe:碼搞的想撞牆,所以想跟大大學習一番 :) 02/23 23:09
20F:→ Bambe: 教學 02/23 23:10
21F:→ Bambe: 拍謝是想更新第一句說的話 02/23 23:10