今天用的PHP的move_uploaded_file方法保存前端上傳的中文名稱文件時,方法返回假,調試時錯誤碼為2,錯誤信息為:
move_uploaded_file(D:\ git_prj \ xx \ think \ Public \ attachment / upload / staffworking年休假說明.docx):無法打開流:無效的參數。
在網上搜了下原因,LINUX下一般是由於目標目錄沒有寫權限。但是我這個是窗口目錄,不存在權限的問題,而且我開發時用數字命名的文件名,測試正常。再繼續找原因,發現是中文編碼的問題。保存文件時,需要將中文由UTF8轉為GB2312,確實有點讓人費解:(
$ attachment = $ _FILES ['attachment'];
$ name = iconv(“UTF-8”,“gb2312”,$ attachment ['name']);
move_uploaded_file($ attachment ['tmp_name'],DOCROOT。“attachment / upload / {$ name}”);
偷偷糾正一句,目標路徑是可以用相對路徑的