> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Charger un objet blob vers le stockage de titre

> Exemple de code C plat pour charger un objet blob vers Title Storage des services XBOX à l'aide de XblTitleStorageUploadBlobAsync, avec des conseils sur la taille des blocs et la durée de vie de la mémoire tampon.

Cette rubrique montre comment charger un objet blob vers Title Storage des services XBOX à l'aide de l'exemple de code C plat suivant.

## Remarques sur les paramètres de XblTitleStorageUploadBlobAsync

* La mémoire tampon qui contient les données de l'objet blob à charger doit rester disponible pendant toute la durée de l'opération asynchrone. Vous ne devez pas modifier la mémoire tampon pendant qu'un chargement est en cours.

* Cette méthode utilise une taille par défaut si vous ne fournissez pas `preferredUploadBlockSize`, ou si la taille fournie n'est pas comprise dans la plage acceptable. La taille minimale est de 1 024 octets. La taille maximale est de 4 194 304 octets. La taille par défaut est de 262 144 octets.

* Les objets blob binaires sont chargés en plusieurs segments de `preferredUploadBlockSize` s'ils dépassent cette taille. Dans ce cas, nous vous recommandons d'utiliser des tailles plus importantes. Si des délais d'expiration se produisent, réessayez le chargement avec une taille plus petite.

#### C plat

```cpp theme={null}
auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = blobBuffer.get();
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock };    // Take over ownership of XAsyncBlock*.
    std::unique_ptr<std::vector<uint8_t>> blobBuffer{ static_cast<std::vector<uint8_t>*>(asyncBlock->context) };
    HRESULT hr = XblTitleStorageUploadBlobResult(asyncBlock, &blobMetadata);
};

XblTitleStorageBlobMetadata blobMetadata{};
pal::strcpy(blobMetadata.displayName, displayName.size() + 1, displayName.c_str());
pal::strcpy(blobMetadata.serviceConfigurationId, XBL_SCID_LENGTH, scid);
pal::strcpy(blobMetadata.blobPath, blobPath.size() + 1, blobPath.c_str());
blobMetadata.storageType = storageType;
blobMetadata.blobType = blobType;
time(&blobMetadata.clientTimestamp);

HRESULT hr = XblTitleStorageUploadBlobAsync(
    xboxLiveContext,
    blobMetadata,
    reinterpret_cast<const uint8_t*>(blobBuffer->data()),
    blobBufferSize,
    eTagMatchCondition,
    preferredUploadBlockSize, //    Optional .
    asyncBlock.get()
);

if (SUCCEEDED(hr))
{
    // The call succeeded, so release std::unique_ptr ownership of XAsyncBlock* because
    // the callback takes over ownership. If the call fails, however, std::unique_ptr keeps
    // ownership and deletes XAsyncBlock*.
    asyncBlock.release();
    blobBuffer.release();
}
```

## Voir aussi

[XAsyncBlock](/fr/reference/system/xasync/structs/xasyncblock)

[XblTitleStorageBlobMetadata](/fr/reference/live/xsapi-c/title_storage_c/structs/xbltitlestorageblobmetadata)

[XblTitleStorageUploadBlobAsync](/fr/reference/live/xsapi-c/title_storage_c/functions/xbltitlestorageuploadblobasync)

[XblTitleStorageUploadBlobResult](/fr/reference/live/xsapi-c/title_storage_c/functions/xbltitlestorageuploadblobresult)


## Related topics

- [Procédures](/fr/services/xbox-services/storage/title-storage/how-to/index.md)
- [Télécharger un objet blob depuis le stockage de titre](/fr/services/xbox-services/storage/title-storage/how-to/live-downloading-title-storage-blob.md)
- [Obtenir les métadonnées d'un objet blob du stockage de titre](/fr/services/xbox-services/storage/title-storage/how-to/live-getting-title-storage-blob-metadata.md)
- [Supprimer un objet blob du stockage de titre](/fr/services/xbox-services/storage/title-storage/how-to/live-deleting-title-storage-blob.md)
- [Configurer le stockage de titre dans Partner Center](/fr/services/xbox-services/storage/title-storage/config/live-title-storage-portal-config.md)
