2013-02-22 2 views
0

Я развернул сетку mongodb для уменьшения времени рендеринга изображения и уменьшил запрос apache. Мне нужно уточнение относительно большого размера изображения, как мы можем показать его в браузере ?.MongoDB GridFS Разъяснение

Фактически я взял одно изображение и размер более 40 МБ для хранения его в сетях mongodb. Его хранят, используя следующую команду. Но Я не могу показать его в браузере 40 Мб изображения в браузере и как мы можем передавать изображение в браузере?. Помогите нам.

Команды:

Шаг 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 File

**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); 
} 
  • Kumaran
+0

Сколько времени требуется, чтобы прочитать все байты с вашего сервера MongoDB во втором случае? – WiredPrairie

+0

Программа 2: в FireFox: принято 20 секунд, но ее не работает в браузере Chrome, она показывает только пустую белую страницу. – Kumaran

+0

Может ли Chrome показать файл ОК, если вы просто загружаете его в Chrome (не через MongoDB?). Также - Можете ли вы также отправить «длину контента»? – WiredPrairie

ответ

0

Во-первых, 40 МБ действительно большой, чтобы показать браузер, особенно, если вы нас IE. Попробуйте уменьшить изображения.

И, во-вторых, как я указал here, вы можете использовать API-интерфейс MongoDB REST, который является отличным способом получения изображений.