You are currently browsing legacy 4.1 version of documentation. Click here to switch to the newest 4.2 version.

We can help you with migration to the latest RavenDB

Contact Us Now
see on GitHub

Attachments: Loading Attachments

There are a few methods that allow you to download attachments from a database:

session.Advanced.Attachments.Get can be used to download an attachment.
session.Advanced.Attachments.GetNames can be used to download all attachment names that are attached to a document.
session.Advanced.Attachments.GetRevision can be used to download an attachment of a revision document.
session.Advanced.Attachments.Exists can be used to determine if an attachment exists on a document.

Syntax

AttachmentResult Get(string documentId, string name);
AttachmentResult Get(object entity, string name);
AttachmentName[] GetNames(object entity);
AttachmentResult GetRevision(string documentId, string name, string changeVector);
bool Exists(string documentId, string name);
Task<AttachmentResult> GetAsync(string documentId, string name, CancellationToken token = default);
Task<AttachmentResult> GetAsync(object entity, string name, CancellationToken token = default);
Task<AttachmentResult> GetRevisionAsync(string documentId, string name, string changeVector, CancellationToken token = default);
Task<bool> ExistsAsync(string documentId, string name, CancellationToken token = default);

Example

using (var session = store.OpenSession())
{
    Album album = session.Load<Album>("albums/1");

    using (AttachmentResult file1 = session.Advanced.Attachments.Get(album, "001.jpg"))
    using (AttachmentResult file2 = session.Advanced.Attachments.Get("albums/1", "002.jpg"))
    {
        Stream stream = file1.Stream;

        AttachmentDetails attachmentDetails = file1.Details;
        string name = attachmentDetails.Name;
        string contentType = attachmentDetails.ContentType;
        string hash = attachmentDetails.Hash;
        long size = attachmentDetails.Size;
        string documentId = attachmentDetails.DocumentId;
        string changeVector = attachmentDetails.ChangeVector;
    }

    AttachmentName[] attachmentNames = session.Advanced.Attachments.GetNames(album);
    foreach (AttachmentName attachmentName in attachmentNames)
    {
        string name = attachmentName.Name;
        string contentType = attachmentName.ContentType;
        string hash = attachmentName.Hash;
        long size = attachmentName.Size;
    }

    bool exists = session.Advanced.Attachments.Exists("albums/1", "003.jpg");
}
using (var asyncSession = store.OpenAsyncSession())
{
    Album album = await asyncSession.LoadAsync<Album>("albums/1");

    using (AttachmentResult file1 = await asyncSession.Advanced.Attachments.GetAsync(album, "001.jpg"))
    using (AttachmentResult file2 = await asyncSession.Advanced.Attachments.GetAsync("albums/1", "002.jpg"))
    {
        Stream stream = file1.Stream;

        AttachmentDetails attachmentDetails = file1.Details;
        string name = attachmentDetails.Name;
        string contentType = attachmentDetails.ContentType;
        string hash = attachmentDetails.Hash;
        long size = attachmentDetails.Size;
        string documentId = attachmentDetails.DocumentId;
        string changeVector = attachmentDetails.ChangeVector;
    }

    AttachmentName[] attachmentNames = asyncSession.Advanced.Attachments.GetNames(album);
    foreach (AttachmentName attachmentName in attachmentNames)
    {
        string name = attachmentName.Name;
        string contentType = attachmentName.ContentType;
        string hash = attachmentName.Hash;
        long size = attachmentName.Size;
    }

    bool exists = await asyncSession.Advanced.Attachments.ExistsAsync("albums/1", "003.jpg");
}