為了把圖片和檔案上傳到獨立的靜態資源伺服器,我在OneThink中的上傳檔案驅動中增加了一個上傳檔案的驅動,暫且命名為Cloud.class.php吧。在研究過程中發現了一些錯誤,希望能給其它朋友帶來些幫助,給官方增加一份薄力吧。
錯誤總共有2個
1.檔案資料表中沒有path這個欄位,這個欄位應該儲存檔案的完整路徑,但是在判斷檔案是否存在的時候,呼叫了。導致的判斷結果是檔案始終是存在的。
2.模組配置config.php中的 檔案上傳相關配置,callback是無效的,無論是否配置都是true。
解決思路:
1.我發現檔案資料表中有個location欄位,該欄位的註釋是檔案儲存位置。型別是tinyint(3),想來是用來判斷是否是遠端圖片的。感覺沒必要。可直接判斷url欄位是否為空,不為空就是遠端檔案。
2.在上傳遠端檔案的時候(不管是圖片還是檔案),不需要儲存path欄位,只需要儲存驅動返回的url內容。
錯誤一:呼叫回撥函式檢測檔案是否存在,不存在就刪除檔案
函式檔案位置:THINKPHP\Library\Think\Upload.class.php
官方原版檔案的第169行
函式名:upload
程式碼片段:
file和picture兩個資料表結構不一樣
在研究過程中我發現,用來儲存圖片和檔案的資料表結構不是太一樣。對應的資料表分別是
圖片資料表:onethink_picture
檔案資料表:onethink_file
錯誤二:模組配置config.php中的 檔案上傳相關配置,callback是無效的
稍後我會貼出解決方法
錯誤總共有2個
1.檔案資料表中沒有path這個欄位,這個欄位應該儲存檔案的完整路徑,但是在判斷檔案是否存在的時候,呼叫了。導致的判斷結果是檔案始終是存在的。
2.模組配置config.php中的 檔案上傳相關配置,callback是無效的,無論是否配置都是true。
解決思路:
1.我發現檔案資料表中有個location欄位,該欄位的註釋是檔案儲存位置。型別是tinyint(3),想來是用來判斷是否是遠端圖片的。感覺沒必要。可直接判斷url欄位是否為空,不為空就是遠端檔案。
2.在上傳遠端檔案的時候(不管是圖片還是檔案),不需要儲存path欄位,只需要儲存驅動返回的url內容。
錯誤一:呼叫回撥函式檢測檔案是否存在,不存在就刪除檔案
函式檔案位置:THINKPHP\Library\Think\Upload.class.php
官方原版檔案的第169行
函式名:upload
程式碼片段:
/* 呼叫回撥函式檢測檔案是否存在 */ $data = call_user_func($this->callback, $file); if( $this->callback && $data ){ if ( file_exists('.'.$data['path']) ) { $info[$key] = $data; continue; }elseif($this->removeTrash){ call_user_func($this->removeTrash,$data);//刪除垃圾據 } }這個地方的問題在於data['path']這個變數,在資料表中的onethink_picture中是存在path的,而在onethink_file中是不存在path的。
file和picture兩個資料表結構不一樣
在研究過程中我發現,用來儲存圖片和檔案的資料表結構不是太一樣。對應的資料表分別是
圖片資料表:onethink_picture
檔案資料表:onethink_file
錯誤二:模組配置config.php中的 檔案上傳相關配置,callback是無效的
稍後我會貼出解決方法
回覆
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
評論
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
評論
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
評論
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
評論
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
評論
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
評論
CoreThink是一套完全開源免費的WEB產品開發框架,追求簡單、高效、卓越。可輕鬆實現支援多終端的WEB產品快速搭建、部署、上線。系統功能採用模組化、元件化、外掛化等開放化低耦合設計,應用商城擁有豐富的功能模組、外掛、主題,便於使用者靈活擴充套件和二次開發。
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567
官方網址:http://www.corethink.cn/
CoreThink免費下載地址:http://www.corethink.cn/publish
諮詢郵箱:BD@corethink.cn
CoreThink交流群②: 105108204
CoreThink交流群③: 219842410
CoreThink交流群①(已滿): 130747567