公益图书馆-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}"/>
时间: 2024-10-18 09:35:47

公益图书馆-MongoDB-笔记的相关文章

公益图书馆-学习笔记

1.HTML <caption> 标签 caption 标签必须紧随 table 标签之后.您只能对每个表格定义一个标题.通常这个标题会被居中于表格之上. <table border="6"> <caption>表格标题</caption> 2.模板继承是thinkphp的一项更加灵活的模板布局方式,模板继承不同于模板布局. 模板可以定义一个基础模板,并且定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基

公益图书馆-学习笔记四

1.复选框及其使用方法: <select class="form-control statusSelect" name="select" onchange="javascript:location.href=this.value;"> //注意: onchange内的javascript函数 <option selected value="/user/index?status=yes">我被选中<

公益图书馆-学习笔记三

1.脚手架页面布局--bootstrap 我们的整个页面分成了16个span,即16部分.在添加一个block时,要在里面设置一个div,然后div里面设置该模块所占的span数和内边距: <block name="content"> <div class="span12 p20"> <form ...> </div> </block> 该代码表示content模块占据12个span,内边距为20. 2.T

公益图书馆-学习笔记二

1.在视图中显示控制器变量. 在控制其中为变量赋值即可,如 $this->info_user=$user;然后在视图中可直接使用. 2.html显示数组使用 volist标签 <volist name="info_user" id="vo"> {$vo.username} {$vo.email}即可使用数组里的键值对 3.隐藏button <button type="submit" style="display:

公益图书馆-学习笔记五

使用jquery来设置html元素的显示与隐藏属性,同时调整div的高度 点击上面的“收起回复”超链接之后,执行下面几个动作: a.“收起回复”变成“回复(3)”: b.回复全部隐藏: c.重新自适应高度. 再次点击“回复(3)”后,执行下面几个动作: a.“回复(3)”变成“收起回复”: b.回复全部显示: c.重新自适应高度. 1.为了绑定jquery函数,先对html元素或div要设置 类class 2.实现“收起回复”和“回复(3)”之间的转换 对象:.replyTrigger 内容:使

公益图书馆-学习笔记六 volist嵌套

volist嵌套使用 1.重要特性是如果volist的name对应一个数组,则它会把数组遍历一遍.例如 <volist name="comments" id="vo">XXX</volist>而 $comments[0]=$comment1; $comments[1]=$comment2;则上面代码会先把$comment1当成vo把代码XXX执行一遍:然后再把$comment2当成vo再把XXX执行一遍.所以画评论框时只要上面一段代码,它就会

公益图书馆-UserController-代码学习

1.我的捐书信息 /** * @author Edwin * @description 显示捐书信息 */ public function donate() { $BookDB = D('Book'); //获取BOOK数据表对象,实例化 $id = session('user')['id']; //获取当前用户id信息,比如我的id是73 $where['contributor_id'] = $id; //contributor_id = $id为查询条件 $count = $BookDB->

公益图书馆-OnshelfController-代码学习

1.书籍上架 更新数据库 $id = $_GET['id']; //书籍id $bookDB = D("Book"); //实例化数据表对象 $data['status'] = "ON_SHELF"; //准备修改的数据项 把status变换为ON_SHELF $result = $bookDB->update('id='.$id,$data); //数据库更新操作 print_r($result); redirect("/onshelf/index

公益图书馆-Contribute捐赠-代码学习

1.ContributeController.class.php 控制器 <?php /** * Created by PhpStorm. * User: lxd * Date: 14-7-27 * Time: 下午2:43 */ namespace Home\Controller; class ContributeController extends SyController{ /**@author lxd * @description 首页 */ public function index(

公益图书馆项目开始

1.我的任务是在主页“我的个人信息”里面读取数据库并显示信息. 要点: 熟悉MySQL软件: 熟悉mysql数据库基本操作: 熟悉Bootstrap里:bootstrap2里的脚手架和bootstrap3里的全部内容. 2.当前任务:先把成晨的“我的预约信息”代码及其他代码读懂 3.编码习惯: /** * Created by lxd on 14-8-8. */ /** * @description add some js for template.html * @author lxd */ 公