PHP 上傳檔案 move_uploaded_file 報錯
錯誤內容:
“Warning : move_uploaded_file(絕對路徑/供應商資料.xlsx): failed to open stream: Invalid argument”
試了下傳數字和字母,成功!於是考慮了當前是在windows下開發,windows下的預設編碼是gb2312,
所以需要將檔名的編碼格式轉了。
(轉)http://blog.csdn.net/candyguy242/article/details/20732601
在上傳檔案後,一般都會用 move_uploaded_file() 進行檔案移動改名。但是 move_uploaded_file() 並不支援 UTF-8 編碼,如果含有,那麼函式就會執行失敗,但是這個函式是支援 GB2312 或者是 GBK 編碼的,因此可以利用 iconv() 函式先進行名字轉換來來解決問題。有兩種情況:1. 伺服器是中文 Windows 環境在伺服器是中文 Windows 環境下,由於中文 Windows 系統的編碼是 GB2312,那麼可以如下使用程式碼:
[Plain Text]
$upload_file = iconv("UTF-8", "GB2312", $_FILES["myfile"]["name"]);
move_uploaded_file($_FILES["myfile"]["tmp_name"], $upload_file);
上面程式碼的意思是,先用 iconv() 函式對上傳檔名轉換為 GB2312 碼(上傳的檔名若含有中文,那麼使用 UTF-8 編碼),然後再進行 move_uploaded_file() 改名。這樣在中文系統下就可以正常顯示了。但是 Linux 系統本身就是使用 UTF-8 來編碼的,因此想要在 Linux 下正常顯示中文,那麼就再次 iconv() 轉換一下,這是下面所說的第 2 種情況。
- 伺服器是 Linux 系統
如上面所講,利用 move_uploaded_file() 函式支援 GBK 的特性,那麼我們可以利用再次轉換的小技巧使上傳的檔名中含有中文的檔案在 Linux 下也能正常顯示中文名稱,如下面程式碼所示:
if (move_uploaded_file($_FILES["myfile"]["tmp_name"],$upload_file))
{
$res_file= iconv("GBK","UTF-8",$upload_file);
// 再從 GBK 轉為 UTF-8
rename($upload_file,$res_file);
// 重新命名一下檔案
echo "<strong>upload ok</strong>
";
}
else
{
echo "upload failed";
}
?>
執行輸出:
<1> 上傳一個檔名中含有中文的檔案:
<2> 檢查在 Linux 下是否正常顯示:正常。
解決 move_uploaded_file() 中文亂碼問題http://www.groad[.NET]
(http://lib.csdn.net/base/dotnet)/bbs/thread-7179-1-1.html(出處: 曲徑通幽論壇)
相關文章
- php檔案上傳之多檔案上傳PHP
- PHP上傳檔案PHP
- PHP 檔案上傳PHP
- PHP 分片上傳檔案PHP
- PHP ftp上傳檔案PHPFTP
- PHP--檔案上傳PHP
- Hadoop hdfs上傳檔案報錯解決Hadoop
- php檔案上傳大小限制PHP
- php uploadify上傳檔案PHP
- php單個檔案上傳PHP
- php多個檔案上傳PHP
- PHP檔案上傳錯誤程式碼,狀態測試,除錯PHP除錯
- PHP上傳檔案設計分析PHP
- 【PHP】修改PHP配置檔案php.ini 上傳檔案的大小限制PHP
- ASP.NET上傳大檔案報錯,IIS7.0ASP.NET
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)
- php.ini修改php上傳檔案大小限制PHP
- php大檔案上傳注意事項PHP
- PHP實現圖片(檔案)上傳PHP
- PHP上傳檔案到七牛(Qiniu)PHP
- PHP檔案跨伺服器上傳PHP伺服器
- PHP如何通過CURL上傳檔案PHP
- php圖片上傳之檔案安全PHP
- PHP實現單檔案、多檔案上傳 封裝 物件導向實現檔案上傳PHP封裝物件
- php移動檔案的函式move_uploaded_file()和copyPHP函式
- Nginx 報錯413 Request Entity Too Large 上傳檔案過大Nginx
- 配置php.ini實現PHP檔案上傳功能PHP
- 上傳專案到gitHub,上傳報錯和刪除gitHub上的專案Github
- 上傳圖片和檔案出錯!!!
- 在php中通過curl上傳檔案PHP
- php通過ftp協議上傳檔案PHPFTP協議
- php上傳大檔案失敗處理PHP
- 修改PHP上傳檔案大小限制的方法PHP
- php如何上傳txt檔案,並且讀取txt檔案PHP
- 單個檔案上傳和批量檔案上傳
- beego檔案上傳使用getFile出錯Go
- PHP檔案上傳字尾名與檔案型別對照表PHP型別
- php上傳檔案涉及到的引數:PHP