1

PHPを使用してMongodbに250MB以上の圧縮ファイルを保存しました。しかし、私はそれを取り戻すことができません。「0」の数字が表示されるだけです。以下は私のコードです。

$id = $_GET['id'];
require 'dbconnection.php';


$mongo = DBConnection::instantiate();
$gridFS = $mongo->database->getGridFS();

$object = $gridFS->findOne(array('_id' => new MongoId($id)));
header("Content-Transfer-Encoding: binary");
header('Content-type: '.$object->file['filetype']);
header('Expires: 0');


header("Content-disposition: attachment; filename=".$object->file['filename']);
//header('Content-name: '.$object->file['filename']);
  header('Content-Type:application-x/force-download'); 
echo $object->getBytes();

チェックしてください。これは、100MB 未満のファイルでは問題なく機能します。

4

1 に答える 1

2

ドキュメントを読むhttp://php.net/manual/en/mongogridfsfile.getbytes.php

警告: これにより、ファイルがメモリに読み込まれます。ファイルがメモリよりも大きい場合、問題が発生します。

したがって、大きなファイルをチャンクに保存してから、チャンクをループしてエコーする必要があります。Googleを精査してこれを見つけました(3.チャンクに基づいてファイルにアクセスする方法を示します):

http://blog.hardkap.com/index.php/posts/00069/MongoDB---GridFS

于 2012-04-06T10:58:23.053 に答える