Creates a new GridFS file and copies the contents of a readable stream to it.

function uploadFromStream($filename, $source, array $options = []): mixed

This method has the following parameters:

Parameter Type Description
$filename string The filename of the file.
$source resource Readable stream, from which the new GridFS file’s contents will be read.
$options array Optional. An array specifying the desired options.

The $options parameter supports the following options:

Option Type Description
_id mixed Optional. Value to use as the file document identifier. Defaults to a new MongoDB\BSON\ObjectId object.
chunkSizeBytes integer Optional. The chunk size in bytes. Defaults to the bucket’s chunkSizeBytes option.
metadata array|object Optional. User data for the metadata field of the file document. If not specified, the metadata field will not be set on the file document.

Return Values

The _id field of the metadata document associated with the newly created GridFS file. If the _id option is not specified, a new MongoDB\BSON\ObjectId object will be used by default.


MongoDB\Exception\InvalidArgumentException for errors related to the parsing of parameters or options.

MongoDB\Driver\Exception\RuntimeException for other errors at the driver level (e.g. connection errors).



$bucket = (new MongoDB\Client)->test->selectGridFSBucket();

$stream = fopen('php://temp', 'w+b');
fwrite($stream, "foobar");

$id = $bucket->uploadFromStream('filename', $stream);


The output would then resemble:

object(MongoDB\BSON\ObjectId)#3009 (1) {
  string(24) "5acf81017e21e816e538d883"