調用 move_uploaded_file()函數出錯

今天在做上傳文件模塊時,調用move_uploaded_file()一直出現兩個警告

Warning: move_uploaded_file(./upfiles/圖片.rar) [function.move-uploaded-file]: failed to open stream: Invalid argument in D:\AppServ\www\29\show1.php on line 52

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Windows\Temp\php4EFA.tmp' to './upfiles/圖片.rar' in D:\AppServ\www\29\show1.php on line 52

一開始以爲是文件沒有權限修改權限之後還是報錯

後來看到有人說是要使用文件絕對路徑 修改如下

move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

修改後:

move_uploaded_file($_FILES["file"]["tmp_name"],
"D:\AppServ\www\29\" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

然後還是抱錯,
無意中換了一個英文文件上傳就沒有抱錯,才發現是中文亂碼的問題,我的php文件採用的是utf-8格式編碼,服務器是window系統,由於中文 Windows 系統的編碼是 GB2312

所以要把utf-8的編碼路徑轉爲gbk編碼。

$upload_file = iconv("UTF-8", "GB2312", $_FILES["myfile"]["name"]);
move_uploaded_file($_FILES["myfile"]["tmp_name"], $upload_file)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章