0

我们如何使用 PHP 将文件上传和检索到mongodb,直接使用表单...比如在注册期间上传个人资料图片。请问谁能发给我代码?

4

3 回答 3

2

我现在手头没有代码示例,但它确实非常简单。像通常通过文件提交一样将文件上传到临时位置,然后获取文件内容并创建一个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);
于 2013-09-03T17:35:43.013 回答
2

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

于 2013-09-05T06:34:07.910 回答
1

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

***************** 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
}
}
}
?>

希望你会尝试这个。享受编码。保持祝福。

于 2017-10-20T07:12:47.283 回答