Skip to content
  • Attachment
  • class Esri::ArcGISRuntime::Attachment

    A file (such as an image or document) attached to a feature in a ServiceFeatureTable or a GeodatabaseFeatureTable. More...

    Header: #include <Attachment.h>
    Since: Esri::ArcGISRuntime 100.0
    Inherits: Esri::ArcGISRuntime::Object

    Public Functions

    virtual ~Attachment() override
    (since Esri::ArcGISRuntime 100.1) qint64 attachmentId() const
    QUrl attachmentUrl() const
    QString contentType() const
    (since Esri::ArcGISRuntime 200.2) QFuture<QByteArray> fetchDataAsync()
    bool isDataFetched() const
    (since Esri::ArcGISRuntime 300.0) QString keywords() const
    QString name() const
    qint64 size() const

    Detailed Description

    Attachments allow you to associate files containing additional information with specific, relevant features. For example, a building inspector could attach a PDF of a permit to a building feature. Attachments are not stored as attributes, rather the attachment data is linked with the feature inside its ServiceFeatureTable or a GeodatabaseFeatureTable.

    If a feature table supports attachments (ArcGISFeatureTable::hasAttachments), each feature in the table may have zero or more attachments. Get a feature's collection of attachments by calling ArcGISFeature::attachments. You can examine an attachment's name, type, and file size, and download the file using fetchDataAsync. Once downloaded, you can work with the data in your app (display it to the user, for example).

    If a feature allows editing of its attachments (ArcGISFeature::canEditAttachments value is true), you can add to the feature's collection of attachments using AttachmentListModel::addAttachmentAsync(QIODevice& ioDevice, const QString& contentType, const QString& name, QObject* parent). The data must be in one of the supported attachment formats. You can also update or delete attachments from the ArcGISFeature, as required.

    Your app's available memory and storage space may impact the size of attachments you can add to a feature, or retrieve from the feature's collection. Apps that need to work with large attachments should be tested using representative physical devices and sample attachments.

    Member Function Documentation

    [override virtual noexcept] Attachment::~Attachment()

    Destructor.

    [since Esri::ArcGISRuntime 100.1] qint64 Attachment::attachmentId() const

    Returns the ID of the attachment.

    This function was introduced in Esri::ArcGISRuntime 100.1.

    QUrl Attachment::attachmentUrl() const

    Returns the URL of the attachment if its data is already fetched.

    QString Attachment::contentType() const

    Returns the MIME type of the attachment file.

    [since Esri::ArcGISRuntime 200.2] QFuture<QByteArray> Attachment::fetchDataAsync()

    Returns the attachment's data.

    This method returns a QFuture for the asynchronous operation. Use future.then() to continue processing when the operation completes. Use future.onFailed() to handle exceptions of type ErrorException.

    See Working with QFuture for further details.

    This function was introduced in Esri::ArcGISRuntime 200.2.

    bool Attachment::isDataFetched() const

    Returns true if the attachment data has already been retrieved, false otherwise.

    This is true if the attachment data has been retrieved previously. Even so, you must call fetchData() to get the data. The operation should complete more quickly since the data is already available locally.

    You can request attachment data proactively to reduce the time it takes to retrieve the data from its source. However, to avoid unnecessary communication overhead, you should fetch the data only when the user needs it.

    [since Esri::ArcGISRuntime 300.0] QString Attachment::keywords() const

    Returns the keywords of the attachment concatenated as a string.

    Despite its plural inflection, this property is typically treated as a single keyword.

    Multiple keywords can be concatenated into the string using a delimiter (for example, a comma) if desired but other APIs, like AttachmentsPopupElement, will treat the entire string as a single keyword and additional custom parsing will be required to split the string into multiple keywords.

    This function was introduced in Esri::ArcGISRuntime 300.0.

    See also AttachmentListModel::addAttachmentAsync(const QString &filePath, const QString &contentType, const QString &name, const QString &keywords, QObject *parent = nullptr) and AttachmentListModel::updateAttachmentAsync(Esri::ArcGISRuntime::Attachment *attachment, const QString &filePath, const QString &contentType, const QString &name, const QString &keywords).

    QString Attachment::name() const

    Returns the name of the attachment.

    qint64 Attachment::size() const

    Returns the size of the attachment's data in bytes.

    Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.