mongodb操作文件

五、GridFS

5.1 基本操作

实例代码:

==Gridfa.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>mongo GFS存储上传文件</title>

</head>

 

<body>

<form action="dealGFS.php" name="form1" method="post" enctype="multipart/form-data">

    <input type="file" name="upfile"  />

    <input type="submit" value="上传" />

</form>

</body>

</html>

 

==dealGFS.php

<?php   

try { 

$conn = new Mongo();

$db = $conn->selectDB("dbtest");

//初始化GridFS

$grid = $db->getGridFS();

  

$name = $_FILES['upfile']['name'];

//print_r($_FILES['upfile']);

//保存文件

$id = $grid->storeUpload('upfile', $name);

$type= "";

$ext = end(explode('.', $name));

switch ($ext) {

case "jpg": $type = "image/jpeg"; break;

case "gif": $type = "image/gif"; break;

case "png": $type = "image/png"; break;

case "txt": $type = "text/plain"; break;

case "pdf": $type = "application/pdf"; break;

case "zip": $type = "application/x-zip"; break;

 

}

//更新文件信息

$files = $db->fs->files;

$files->update(array("filename" => $name), array('$set' => array("contentType" => $type, "aliases" => null, "metadata" => null)));

//显示列表

$cursor = $grid->find(); 

foreach ($cursor as $obj) {

?>

<img src="getFile.php?filename=<?php echo $obj->getFilename(); ?>" width="150" />

<?php

}

$conn->close();

echo "<a href='gfs.html' target='_self'>返回继续上传</a>";

} catch(Exception $e) {

echo $e->message();

}

 

  

?>

 

==getFile.php

<?php

 

$conn = new Mongo();

$db = $conn->dbtest;

$filename = $_GET['filename'];

// GridFS

$gridFS = $db->getGridFS();     

$image = $gridFS->findOne(array('filename'=>$filename));

//设定文档类型,显示图片

header('Content-type: image/jpeg');

echo $image->getBytes();

 

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值