zoukankan      html  css  js  c++  java
  • 公益图书馆-MongoDB-笔记

    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}"/>
  • 相关阅读:
    《软件安全系统设计最佳实践》课程大纲
    《基于IPD流程的成本管理架构、方法和管理实践》培训大纲
    《技术规划与路标开发实践 》内训在芜湖天航集团成功举办!
    年终总结,究竟该写什么?
    Docker安装RabbitMQ
    Ubuntu18安装docker
    Ubuntu18.04安装MySQL
    Windows常用CMD命令
    ping不通域名的问题OR请求找不到主机-问题
    JMeter 函数用法
  • 原文地址:https://www.cnblogs.com/wingjay/p/3954448.html
Copyright © 2011-2022 走看看