透過 TypeScript 刪除及還原 Blob
本文說明如何使用適用於 JavaScript 的 Azure 儲存體 客戶端連結庫刪除 Blob,以及如何在保留期間還原虛刪除的 Blob。
必要條件
- 本文中的範例假設您已有設定好要搭配適用於 JavaScript 的 Azure Blob 儲存體用戶端程式庫使用的專案。 Azure Blob 儲存體若要了解如何設定專案,包括套件安裝、匯入模組,以及建立授權的用戶端物件來處理資料資源,請參閱開始使用 Azure Blob 儲存體和 TypeScript。
- 授權機制必須具有刪除 Blob 或還原虛刪除的 Blob 的權限。 若要深入了解,請參閱下列 REST API 作業的授權指引:
刪除 Blob
注意
針對記憶體帳戶啟用 Blob 虛刪除時,您無法使用用戶端連結庫方法來執行永久刪除。 使用本文中的方法,虛刪除的 Blob、Blob 版本或快照集會維持可用狀態,直到保留期間到期,此時會永久刪除。 若要深入了解基礎 REST API 作業,請參閱刪除 Blob(REST API)。
若要刪除 Blob,請建立 BlobClient,然後呼叫下列其中一種方法:
下列範例會刪除 blob。
async function deleteBlob(
containerClient: ContainerClient,
blobName
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient =
await containerClient.getBlockBlobClient(blobName);
// include: Delete the base blob and all of its snapshots.
// only: Delete only the blob's snapshots and not the blob itself.
const options: BlobDeleteOptions = {
deleteSnapshots: 'include' // or 'only'
};
const blobDeleteResponse: BlobDeleteResponse = await blockBlobClient.delete(
options
);
if (!blobDeleteResponse.errorCode) {
console.log(`deleted blob ${blobName}`);
}
}
下列範例會刪除 blob (若存在)。
async function deleteBlobIfItExists(
containerClient: ContainerClient,
blobName
): Promise<void> {
// Create blob client from container client
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// include: Delete the base blob and all of its snapshots.
// only: Delete only the blob's snapshots and not the blob itself.
const options: BlobDeleteOptions = {
deleteSnapshots: 'include' // or 'only'
};
const blobDeleteIfExistsResponse: BlobDeleteIfExistsResponse =
await blockBlobClient.deleteIfExists(options);
if (!blobDeleteIfExistsResponse.errorCode) {
console.log(`deleted blob ${blobName}`);
}
}
還原已刪除的 Blob
Blob 虛刪除可保護個別的 Blob 及其版本、快照集和中繼資料,將刪除的資料保留在系統中一段指定時間,避免不小心刪除或覆寫資料。 在保留期間內,您可以在刪除時將 Blob 還原至其狀態。 保留期限到期後,即會永久刪除該 Blob。 如需關於 Blob 虛刪除的詳細資訊,請參閱 Blob 的虛刪除。
您可以使用 Azure 儲存體用戶端程式庫來還原已虛刪除的 Blob 或快照集。
在停用版本控制時還原虛刪除的物件
若要還原已刪除的 Blob,請建立 BlobClient,然後呼叫下列方法:
這個方法會還原虛刪除的 Blob,以及與其相關聯的任何已刪除快照集。 針對未刪除的 Blob 呼叫這個方法沒有任何作用。
async function undeleteBlob(
containerClient: ContainerClient,
blobName
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient =
await containerClient.getBlockBlobClient(blobName);
const options: BlobUndeleteOptions = {};
const blobUndeleteResponse: BlobUndeleteResponse =
await blockBlobClient.undelete(options);
if (!blobUndeleteResponse.errorCode) {
console.log(`undeleted blob ${blobName}`);
}
}
資源
若要深入了解如何使用適用於 JavaScript 的 Azure Blob 儲存體用戶端程式庫來刪除 Blob 和還原已刪除的 Blob,請參閱下列資源。
REST API 操作
適用於 JavaScript 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 JavaScript 範例與 REST API 作業進行互動。 用來刪除 Blob 和還原已刪除 Blob 的用戶端程式庫方法會使用下列 REST API 作業:
程式碼範例
- 檢視本文中的程式碼範例 (GitHub) (英文)