1. 程式人生 > >關於thinkPHP 上傳檔案問題.. 略坑

關於thinkPHP 上傳檔案問題.. 略坑

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); //例項化上傳類

重新登入,註冊,上傳頭像,檢視資料庫,發現路徑終於對了.

重新整理頁面,退出,重新登入.

發現頭像成功顯示.

問題解決.

浪費時間 : 一下午.

以上.