Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从Mongodb下载大文件_Php_Mongodb_Gridfs - Fatal编程技术网

使用PHP从Mongodb下载大文件

使用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

我使用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的文件。

阅读文档

警告:这会将文件加载到内存中。如果文件更大 比你的记忆,这将导致问题

因此,您需要将大文件存储在块中,然后循环并回显这些块,我搜索了google并发现了这一点(3.显示了如何基于块访问文件):


这很可能与耗尽所有可用的允许内存有关。很抱歉,我从上面的链接中得到了一些信息。上载的254MB文件创建了26MB的块大小。在检索文件时,它将一个接一个地获取块并下载它。我不认为它会把所有的254MB从内存块中下载出来。