# mongoc_gridfs_bucket_upload_from_stream_with_id()

## Synopsis

    bool
    mongoc_gridfs_bucket_upload_from_stream_with_id (mongoc_gridfs_bucket_t *bucket,
                                                     const bson_value_t *file_id,
                                                     const char *filename,
                                                     mongoc_stream_t *source,
                                                     const bson_t *opts,
                                                     bson_error_t *error);

## Parameters

- `bucket`: A mongoc_gridfs_bucket_t.

- `file_id`: A `bson_value_t` specifying the id of the created file.

- `filename`: The name of the file to create.

- `source`: A mongoc_stream_t used as the source of the data to upload.

- `opts`: A `bson_t` or `NULL`.

- `error`: A `bson_error_t` to receive any error or `NULL`.

`opts` may be NULL or a BSON document with additional command options:

- `chunkSizeBytes`: An `int32` chunk size to use for this file. Overrides the `chunkSizeBytes` set on `bucket`.

- `metadata`: A `bson_t` representing metadata to include with the file.

## Description

Reads from the `source` stream and writes to a new file in GridFS. To have libmongoc generate an id, use mongoc_gridfs_bucket_upload_from_stream().

Reads from the `source` stream using mongoc_stream_read() until the return value indicates end-of-file. The `source` stream is not closed after calling mongoc_gridfs_bucket_upload_from_stream(); call mongoc_stream_close() after.

## Returns

True if the operation succeeded. False otherwise and sets `error`.

See also

mongoc_stream_file_new() and mongoc_stream_file_new_for_path(), which can be used to create a source stream from a file.