使用PHP从Mongodb下载大文件
我使用php在Mongodb中存储了超过250MB的压缩文件。但我无法找回它。它只显示“0”数字。下面是我的代码使用PHP从Mongodb下载大文件,php,mongodb,gridfs,Php,Mongodb,Gridfs,我使用php在Mongodb中存储了超过250MB的压缩文件。但我无法找回它。它只显示“0”数字。下面是我的代码 $id = $_GET['id']; require 'dbconnection.php'; $mongo = DBConnection::instantiate(); $gridFS = $mongo->database->getGridFS(); $object = $gridFS->findOne(array('_id' => new MongoI
$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的文件。阅读文档
警告:这会将文件加载到内存中。如果文件更大
比你的记忆,这将导致问题
因此,您需要将大文件存储在块中,然后循环并回显这些块,我搜索了google并发现了这一点(3.显示了如何基于块访问文件):
这很可能与耗尽所有可用的允许内存有关。很抱歉,我从上面的链接中得到了一些信息。上载的254MB文件创建了26MB的块大小。在检索文件时,它将一个接一个地获取块并下载它。我不认为它会把所有的254MB从内存块中下载出来。