我们如何上传&使用PHP将文件检索到 mongodb ,直接使用表格...例如在注册时上传个人资料图片。请有人能把代码发给我吗?
答案 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
}
}
}
?>
希望你能尝试一下。享受编码。祝福。