問題
:最近在專案論壇中,因為要上傳自定義圖片,在做好上傳的前端處理后,在后臺使用move_uploaded_file函式,移動檔案的時候,一直回傳的是 false;
:因為對于這類新加的前端加后臺一起寫的功能,一般是先在本地建一個demo實作,然后在加入到專案中,就在這里,居然出現一個問題,在前端通過ajax提交了file檔案物件后, 本地測驗移動檔案回傳均正常true;但是加入到專案中后,就一直回傳的是 false,具體見上一篇記錄 “jQuery加PHP實作圖片上傳并提交”
//移動到指定目錄,上傳圖片 $res = move_uploaded_file($img['tmp_name'], $pic_path); //專案回傳一直是 false,而本地 是 true
:仔細查看后,發現 “1本地” 和 “2移植專案” 后獲取的 tmp_name 路徑不同,一個是雙斜杠一個是單斜杠,如下圖

解決
:于是本能的想到,把這個雙斜杠轉成單斜杠,單雙斜杠涉及到 PHP的一個轉義的問題,我們可以用下面這兩個函式
//回傳一個去除轉義反斜線后的字串(\' 轉換為 ' 等等),雙反斜線(\\)被轉換為單個反斜線(\), stripslashes ( string $str ) //回傳轉義后的字符, addslashes ( string $str )
:于是,對tmp_name欄位進行,去除轉義 stripslashes() ,將雙引號去除成單引號,發現 move_uploaded_file 移動,就回傳的是 true,
//移動到指定目錄,上傳圖片 $res = move_uploaded_file(stripslashes($img['tmp_name']), $pic_path); //專案回傳true正常
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5051.html
標籤:PHP
