使用php上传和检索文件到mongodb

时间:2013-09-02 10:50:50

标签: mongodb-php

我们如何上传&使用PHP将文件检索到 mongodb ,直接使用表格...例如在注册时上传个人资料图片。请有人能把代码发给我吗?

3 个答案:

答案 0 :(得分:2)

我建议你去GridFS,这是为了保存文件。这是一个很好的例子:http://learnmongo.com/posts/getting-started-with-mongodb-gridfs/,更多关于GridFS的信息:http://docs.mongodb.org/manual/core/gridfs/

答案 1 :(得分:1)

我现在还没有方便的代码示例,但实际上它非常简单。像往常一样通过文件提交将文件上传到临时位置,然后抓取文件内容并创建MongoBinData对象,如下所示:

$record = array("name" => "my photo",
"photo" => new MongoBinData(file_get_contents("myself.jpg")));

$collection->insert($record);

然后,这会将您的图像作为二进制文件插入到数据库中。检索时,只需抓住您的记录:

$record = $collection->findOne();
$imagebody = $record["photo"];

echo将它们输出到php文件中,如下所示

header('Content-Type: image/jpeg');
// Output the image
imagejpeg($imagebody);

答案 2 :(得分:1)

非常感谢这个帮助你的绝佳机会。 首先..GridFS用于保存超过16mb大小的文件。以下代码将帮助您上传和检索小于16 MB的图像。

***************** Image insertion**************

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["pic"]["name"]); //Image:<input type="file" id="pic" name="pic">
$tag = $_REQUEST['username'];
$m = new MongoClient();   
$db = $m->test;      //mongo db name
$collection = $db->storeUpload; //collection name

//-----------converting into mongobinary data----------------

$document = array( "user_name" => $tag,"image"=>new MongoBinData(file_get_contents($target_file)));

//-----------------------------------------------------------
if($collection->save($document)) // saving into collection
{
echo "One record successfully inserted";
}
else
{
echo "Insertion failed";
}

******************Image Retrieving******************

public function show()
{

$m=new MongoClient();
$db=$m->test;
$collection=$db->storeUpload;
$record = $collection->find();
foreach ($record as $data)
{
$imagebody = $data["image"]->bin;
$base64   = base64_encode($imagebody);
?>
<img src="data:png;base64,<?php echo $base64 ?>"/>
<?php
}
}
}
?>

希望你能尝试一下。享受编码。祝福。