【问题标题】:MongoDB GridFS ClarificationMongoDB GridFS 说明
【发布时间】:2013-02-07 22:57:58
【问题描述】:

我部署了 mongodb gridfs 以减少图像渲染时间并减少 apache 请求。我需要一些关于大尺寸图像的说明,我们如何在浏览器中显示它?

实际上我拍摄了超过 40MB 的单个图像,并将其存储在 mongodb gridfs 中。它使用以下命令存储。但是我无法在浏览器中显示它 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 服务器读取所有字节需要多长时间?
  • 程序 2:在 FireFox 中:耗时 20 秒,但在 Chrome 浏览器中不起作用,它只显示空白页。
  • 如果您只是将文件本地加载到 Chrome 中(不是通过 MongoDB),Chrome 是否可以显示该文件?另外——您还可以发送content-length吗?
  • 我认为这与客户端显示这些巨大的图像更相关。使用浏览器在本地打开它们需要多长时间?如果需要相同的时间,那么这不是 mongo 问题...

标签: mongodb image-processing mongoose database


【解决方案1】:

首先,40 MB 对于浏览器来说确实很大,尤其是在您使用 IE 时。尝试较小的图片。

其次,正如我所指出的 here,您可以使用 MongoDB REST API,这是获取图像的好方法。

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 2012-04-28
    • 2016-01-05
    • 2015-03-04
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多