關於thinkPHP 上傳檔案問題.. 略坑
阿新 • • 發佈:2018-12-30
thinkPHP版本 3.2.3
伺服器: Nginx
環境:centOS
描述
在做頭像上傳的時候,上傳的根目錄 預設是/Uploads/.
但由於之前修改過Nginx的配置,當訪問的是靜態資源的時候,
直接去/Public/Home/ 下查詢.
於是就要修改預設路徑.
那麼問題來了,根據手冊一般的方法是:
$upload -> maxsize = 3145728; //設定最大位元組
$upload -> exts = array('jpg', 'jpeg', 'gif', 'png');//限定字尾
$upload -> saveName = $_SESSION['user_id' ]; //每個人的頭像是唯一的 用ID標誌
$upload -> replace = true;//設定同名覆蓋
$upload -> autoSub = false; //不根據日期再設定子目錄
$upload -> rootPath = './Public/Home/'; // 設定附件上傳根目錄
$upload -> savePath = './headImgs/';
執行發現沒有效果,
想了想可能是快取問題.
於是,清除快取,重啟瀏覽器.
還是沒有效果.
以為是自己寫錯,遂查手冊,發現無誤.
苦思冥想無果,遂百度.
原來是thinkPHP自身的BUG,已經例項化上傳類後,再進行修改上傳根目錄,會無效化.
必須用配置檔案傳遞引數的方法來例項化上傳類.
解決方案:
$config = array(
'maxsize' => 3145728,
'exts' => array('jpg', 'jpeg', 'gif', 'png'),
'saveName' => $_SESSION['user_id'],
'replace' => true,
'autoSub' => false,
'rootPath' => './Public/Home/' ,
'savePath' => './HeadImgs/'
);
$upload = new Upload($config); //例項化上傳類
重新登入,註冊,上傳頭像,檢視資料庫,發現路徑終於對了.
重新整理頁面,退出,重新登入.
發現頭像成功顯示.
問題解決.
浪費時間 : 一下午.
以上.