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 ftp上傳檔案PHPFTP
- PHP 分片上傳檔案PHP
- Uedior上傳大檔案超時報錯
- Hadoop hdfs上傳檔案報錯解決Hadoop
- php檔案上傳大小限制PHP
- PHP上傳檔案到七牛(Qiniu)PHP
- php大檔案上傳注意事項PHP
- PHP實現圖片(檔案)上傳PHP
- PHP檔案跨伺服器上傳PHP伺服器
- PHP實現單檔案、多檔案上傳 封裝 物件導向實現檔案上傳PHP封裝物件
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)
- php如何上傳txt檔案,並且讀取txt檔案PHP
- PHP檔案上傳字尾名與檔案型別對照表PHP型別
- git上傳檔案時報錯常見的處理辦法Git
- PbootCMS錯誤提示:檔案上傳失敗boot
- 上傳專案到gitHub,上傳報錯和刪除gitHub上的專案Github
- JavaScript+PHP實現影片檔案分片上傳JavaScriptPHP
- 單個檔案上傳和批量檔案上傳
- php7中的curl檔案上傳出現錯誤該怎麼辦PHP
- 檔案上傳
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- PHP檔案上傳漏洞原理以及防禦姿勢PHP
- 雲伺服器配置php.ini實現PHP檔案上傳伺服器PHP
- PHP 上傳檔案找不到 tmp_name 臨時檔案的問題PHP
- 檔案上傳之三基於flash的檔案上傳
- 前端大檔案上傳/分片上傳前端
- 檔案上傳概述
- ajaxfileupload 檔案上傳
- Flask——檔案上傳Flask
- Linux上傳檔案Linux
- 檔案上傳漏洞
- minio上傳檔案
- SpringBoot上傳檔案Spring Boot
- JavaScript 檔案上傳JavaScript
- Git上傳檔案Git
- PHP 安全:如何防範使用者上傳 PHP 可執行檔案PHP
- Laravel 大檔案分塊上傳錯誤記錄Laravel
- 用PHP實現上傳的ZIP檔案的解壓PHP