MongoDB GridFS说明
问题描述:
我部署了mongodb gridfs以减少图像渲染时间并减少apache请求。我需要一些关于大尺寸图像的说明,我们如何在浏览器中显示它?MongoDB GridFS说明
事实上,我采取单个图像和大小超过40MB的存储在mongodb网格中。它通过使用以下命令进行存储。但我无法在浏览器中显示浏览器40MB图像,以及我们如何在浏览器中流式传输图像?。请帮助我们。
命令:
步骤1:
./mongofiles -d myfiles put /home/bharat/bin/cron/"CT0072 Madagascar Cartoon Characters .jpg"
connected to: 127.0.0.1
added file: { _id: ObjectId('512606b93f15f684e8271aee'), filename: "/home/bharat/bin/cron/CT0072 Madagascar Cartoon Characters .jpg", chunkSize: 262144, uploadDate: new Date(1361446588575), md5: "ab3e9d6a6f01f87e28f76148824a6d4b", length: 20020718 }
done!
步骤2:
./mongofiles -d myfiles list
connected to: 127.0.0.1
/home/bharat/bin/cron/CT0072 Madagascar Cartoon Characters .jpg 20020718
步骤3:
./mongo
MongoDB shell version: 1.8.2
> show tables;
fs.chunks
fs.files
system.indexes
> db.fs.chunks.count();
77
第4步: 编写PHP文件
**Program 1** - Its showing image below 10MB file. But 40MB file is not showing in Chrome Browse but Firefox showing and taking more time to display.
$mongo = new Mongo("128.181.10.28:27017");
$db = $mongo->myfiles;
$gridFS = $db->getGridFS();
$image = $gridFS->findOne("/home/bharat/bin/cron/tomas-hurricane.jpg");
$filedata = $image->getBytes();
header("Content-Length: " . strlen($filedata));
header("Content-Type: image/jpeg");
ob_clean();
echo($filedata);
**Program 2** : Tried second program but not working.
Tried 2nd Program
$mongo = new Mongo("128.181.10.28:27017");
$db = $mongo->myfiles;
$gridFS = $db->getGridFS();
$image = $gridFS->findOne("/home/bharat/bin/cron/tomas-hurricane.jpg");
header("Content-Type: image/jpeg");
$stream = $image->getResource();
while (!feof($stream)) {
echo fread($stream, 8192);
}
- 库马兰
在第二种情况下,需要多长时间从MongoDB服务器读取所有字节? – WiredPrairie 2013-02-22 11:57:51
程序2:在FireFox中:采用20Sec,但它不在Chrome浏览器中工作,只显示空白页面。 – Kumaran 2013-02-22 12:21:59
如果你只是在本地加载到Chrome浏览器(不是通过MongoDB?),Chrome可以显示文件吗?另外 - 你也可以发送“content-length”吗? – WiredPrairie 2013-02-22 13:00:44