標籤:des style blog http color io 使用 ar 檔案
1、http://cn2.php.net/manual/en/class.mongogridfs.php
class FileController extends SyController{ /**@author yj * @description 要使用下面兩個函數,必須先初始化 * Date: 14-9-3 */ public function init(){ header("Content-type:text/html;charset=utf-8"); // 串連Mongo並初始化GFS // 資料庫命名file $conn = new \MongoClient(); $db = $conn->picDB; // 取得gridfs對象 $prefix = ‘pic‘; $collection = $db->getGridfs($prefix); return $collection; } /**@author yj * @description 將所有二進位檔案上傳入MongoDB,並返迴文件索引ID值 * 專用於表單提交資源方式 * Date: 14-9-2 * Time: 11:21 */ public function upload($filename,$collection) { $id = $collection->storeUpload($filename);// 擷取上一步的id對象中的_id字串 $id = strval($id); return $id; } /**@author yj * @description 根據ID值刪除對應資源 * Date: 14-9-3 */ public function delete($id,$collection) {// 將id字串轉化成id對象 $collection->delete(new \MongoId($id)); } /** * @author:yj * 利用資源id和資源type把資源從mongoDB中擷取並顯示 */ public function get() { header("Content-type:text/html;charset=utf-8"); $conn = new \MongoClient(); $db = $conn->picDB;// 取得gridfs對象 $prefix = ‘pic‘; $collection = $db->getGridFS($prefix); //擷取id和type $id = I(‘get.id‘); $type = I(‘get.type‘); //返回資料 $object = $collection->findOne(array(‘_id‘ => new \MongoId($id))); header(‘Content-type:‘.$type); echo $object->getBytes(); }
注意,儲存在mongoDB裡面的‘_id‘是一個對象ID,也叫Object ID。而我們存入mysql裡面的ID是一個字串ID。轉換方法如下:
$id = strval($id); //對象ID中擷取字串ID
‘_id‘ => new \MongoId($id) //將字串ID轉化成Mongo對象ID
2、在其他控制器裡若想要使用MongoDB
//初始化MongoDB資料庫$collection = R(‘file/init‘);//使用表單上傳檔案,$key是表單中input標籤的name$id = R(‘file/upload‘,array($key,$collection));//根據字串ID $avatar_id來刪除Mongo裡面的對應.files .chunks檔案$collection->delete(new \MongoId($avatar_id));//根據字串ID直接從Mongo裡面擷取資源並根據type顯示出來<img src="/file/get/type/image/id/{$avatar_id}"/>
公益圖書館-MongoDB-筆記