ContainerClient class
ContainerClient 代表 Azure 儲存體容器的 URL,可讓您操作其 Blob。
- Extends
建構函式
Container |
建立 ContainerClient 的實例。 此方法接受指向容器的 URL。 編碼的 URL 字串不會逸出兩次,只會逸出 URL 路徑中的特殊字元。 如果 Blob 名稱包含 ? 或 %blob 名稱必須在 URL 中編碼。 |
Container |
建立 ContainerClient 的實例。 此方法接受指向容器的 URL。 編碼的 URL 字串不會逸出兩次,只會逸出 URL 路徑中的特殊字元。 如果 Blob 名稱包含 ? 或 %blob 名稱必須在 URL 中編碼。 |
Container |
建立 ContainerClient 的實例。 |
屬性
account |
|
container |
容器的名稱。 |
credential | 例如 AnonymousCredential、StorageSharedKeyCredential 或任何來自套件的 |
url | 編碼的 URL 字串值。 |
方法
create(Container |
在指定的帳號下建立新的容器。 如果相同名稱的容器已經存在,作業會失敗。 |
create |
在指定的帳號下建立新的容器。 如果具有相同名稱的容器已經存在,則不會變更。 |
delete(Container |
標示要刪除的指定容器。 其中包含的容器和任何 Blob 稍後會在記憶體回收時刪除。 |
delete |
標示要刪除的指定 Blob 或快照集。 Blob 稍後會在記憶體回收時刪除。 請注意,若要刪除 Blob,您必須刪除其所有快照集。 您可以使用刪除 Blob 作業同時刪除這兩者。 |
delete |
如果指定的容器存在,請標示要刪除的容器。 其中包含的容器和任何 Blob 稍後會在記憶體回收時刪除。 |
exists(Container |
如果此用戶端所代表的 Azure 容器資源存在,則傳回 true;否則為 false。 注意:請小心使用此函式,因為其他用戶端或應用程式可能會刪除現有的容器。 反之亦然,在此函式完成之後,其他用戶端或應用程式可能會新增具有相同名稱的新容器。 |
generate |
僅適用于以共用金鑰認證建構的 ContainerClient。 根據傳入的用戶端屬性和參數,產生 Blob Container Service 共用存取簽章 (SAS) URI。 SAS 是由用戶端的共用金鑰認證所簽署。 |
get |
取得指定容器的許可權。 這些權限指出是否可以公開存取容器資料。 警告:剖析 startOn 和 expiresOn 字串時,JavaScript 日期可能會失去有效位數。 例如,新的 Date (「2018-12-31T03:44:23.8827891Z」) .toISOString () 會取得 「2018-12-31T03:44:23.882Z」。 |
get |
建立 <xref:AppendBlobClient> |
get |
建立 BlobBatchClient 物件來執行批次作業。 |
get |
建立 <xref:BlobClient> |
get |
<xref:BlobLeaseClient>取得管理容器租用的 。 |
get |
建立 <xref:BlockBlobClient> |
get |
建立 <xref:PageBlobClient> |
get |
傳回指定容器的所有使用者定義中繼資料和系統屬性。 傳回的資料不包含容器的 Blob 清單。 |
list |
傳回非同步反覆運算器,依階層列出所有 Blob。 在指定的帳號底下。 .byPage () 會傳回非同步反覆運算器,依頁面的階層列出 Blob。 使用語法的
使用
使用
使用頁面大小上限的分頁範例:
|
list |
傳回非同步反覆運算器,以列出指定帳戶下的所有 Blob。 .byPage () 會傳回非同步反覆運算器,以列出分頁中的 Blob。 使用語法的
使用
使用
搭配標記使用分頁的範例:
|
set |
設定指定容器的許可權。 這些權限指出是否可以公開存取容器中的 Blob。 當您設定容器的權限時,會取代現有的權限。 如果未提供任何存取權或 containerAcl,將會移除現有的容器 ACL。 當您在容器上建立儲存的存取原則時,可能需要 30 秒的時間才會生效。 在此間隔期間,與儲存的存取原則相關聯的共用存取簽章會失敗,並顯示狀態碼 403 (禁止),直到存取原則變成作用中為止。 |
set |
設定指定容器的一或多個使用者定義名稱/值組。 如果未提供任何選項,或參數中未定義任何中繼資料,則會移除容器中繼資料。 |
upload |
建立新的區塊 Blob,或更新現有區塊 Blob 的內容。 更新現有的區塊 Blob 會覆寫 Blob 中所有的現有中繼資料。 不支援部分更新;現有 Blob 的內容會以新內容覆寫。 若要執行區塊 Blob 的部分更新,請使用 <xref:BlockBlobClient.stageBlock> 和 <xref:BlockBlobClient.commitBlockList> 。 這是非平行上傳方法,請使用 <xref:BlockBlobClient.uploadFile> 或 <xref:BlockBlobClient.uploadStream><xref:BlockBlobClient.uploadBrowserData> ,以提升並行上傳的效能。 |
建構函式詳細資料
ContainerClient(string, PipelineLike)
建立 ContainerClient 的實例。 此方法接受指向容器的 URL。 編碼的 URL 字串不會逸出兩次,只會逸出 URL 路徑中的特殊字元。 如果 Blob 名稱包含 ? 或 %blob 名稱必須在 URL 中編碼。
new ContainerClient(url: string, pipeline: PipelineLike)
參數
- url
-
string
指向 Azure 儲存體容器的 URL 字串,例如 「 https://myaccount.blob.core.windows.net/mycontainer" ;。 如果使用 AnonymousCredential,您可以附加 SAS,例如 「 https://myaccount.blob.core.windows.net/mycontainer?sasString" ;。
- pipeline
- PipelineLike
呼叫 newPipeline () 以建立預設管線,或提供自訂管線。
ContainerClient(string, StorageSharedKeyCredential | AnonymousCredential | TokenCredential, StoragePipelineOptions)
建立 ContainerClient 的實例。 此方法接受指向容器的 URL。 編碼的 URL 字串不會逸出兩次,只會逸出 URL 路徑中的特殊字元。 如果 Blob 名稱包含 ? 或 %blob 名稱必須在 URL 中編碼。
new ContainerClient(url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)
參數
- url
-
string
指向 Azure 儲存體容器的 URL 字串,例如 「 https://myaccount.blob.core.windows.net/mycontainer" ;。 如果使用 AnonymousCredential,您可以附加 SAS,例如 「 https://myaccount.blob.core.windows.net/mycontainer?sasString" ;。
- credential
-
StorageSharedKeyCredential | AnonymousCredential | TokenCredential
例如 AnonymousCredential、StorageSharedKeyCredential 或任何來自套件的 @azure/identity
認證,以驗證對服務的要求。 您也可以提供實作 TokenCredential 介面的物件。 如果未指定,則會使用 AnonymousCredential。
- options
- StoragePipelineOptions
選擇性。 設定 HTTP 管線的選項。
ContainerClient(string, string, StoragePipelineOptions)
建立 ContainerClient 的實例。
new ContainerClient(connectionString: string, containerName: string, options?: StoragePipelineOptions)
參數
- connectionString
-
string
帳戶連接字串或 Azure 儲存體帳戶的 SAS 連接字串。
[ 注意 - 帳戶連接字串只能用於NODE.JS執行時間。 ] 帳戶連接字串範例 -DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net
SAS 連接字串範例 - BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString
- containerName
-
string
容器名稱。
- options
- StoragePipelineOptions
選擇性。 設定 HTTP 管線的選項。
屬性詳細資料
accountName
accountName: string
屬性值
string
containerName
容器的名稱。
string containerName
屬性值
string
credential
例如 AnonymousCredential、StorageSharedKeyCredential 或任何來自套件的 @azure/identity
認證,以驗證對服務的要求。 您也可以提供實作 TokenCredential 介面的物件。 如果未指定,則會使用 AnonymousCredential。
credential: StorageSharedKeyCredential | AnonymousCredential | TokenCredential
屬性值
StorageSharedKeyCredential | AnonymousCredential | TokenCredential
url
編碼的 URL 字串值。
url: string
屬性值
string
方法詳細資料
create(ContainerCreateOptions)
在指定的帳號下建立新的容器。 如果相同名稱的容器已經存在,作業會失敗。
function create(options?: ContainerCreateOptions)
參數
- options
- ContainerCreateOptions
容器建立作業的選項。
使用方式範例:
const containerClient = blobServiceClient.getContainerClient("<container name>");
const createContainerResponse = await containerClient.create();
console.log("Container was created successfully", createContainerResponse.requestId);
傳回
Promise<ContainerCreateResponse>
createIfNotExists(ContainerCreateOptions)
在指定的帳號下建立新的容器。 如果具有相同名稱的容器已經存在,則不會變更。
function createIfNotExists(options?: ContainerCreateOptions)
參數
- options
- ContainerCreateOptions
傳回
Promise<ContainerCreateIfNotExistsResponse>
delete(ContainerDeleteMethodOptions)
標示要刪除的指定容器。 其中包含的容器和任何 Blob 稍後會在記憶體回收時刪除。
function delete(options?: ContainerDeleteMethodOptions)
參數
- options
- ContainerDeleteMethodOptions
容器刪除作業的選項。
傳回
Promise<ContainerDeleteResponse>
deleteBlob(string, ContainerDeleteBlobOptions)
標示要刪除的指定 Blob 或快照集。 Blob 稍後會在記憶體回收時刪除。 請注意,若要刪除 Blob,您必須刪除其所有快照集。 您可以使用刪除 Blob 作業同時刪除這兩者。
function deleteBlob(blobName: string, options?: ContainerDeleteBlobOptions)
參數
- blobName
-
string
- options
- ContainerDeleteBlobOptions
Blob 刪除作業的選項。
傳回
Promise<BlobDeleteResponse>
區塊 Blob 刪除回應資料。
deleteIfExists(ContainerDeleteMethodOptions)
如果指定的容器存在,請標示要刪除的容器。 其中包含的容器和任何 Blob 稍後會在記憶體回收時刪除。
function deleteIfExists(options?: ContainerDeleteMethodOptions)
參數
- options
- ContainerDeleteMethodOptions
容器刪除作業的選項。
傳回
Promise<ContainerDeleteIfExistsResponse>
exists(ContainerExistsOptions)
如果此用戶端所代表的 Azure 容器資源存在,則傳回 true;否則為 false。 注意:請小心使用此函式,因為其他用戶端或應用程式可能會刪除現有的容器。 反之亦然,在此函式完成之後,其他用戶端或應用程式可能會新增具有相同名稱的新容器。
function exists(options?: ContainerExistsOptions)
參數
- options
- ContainerExistsOptions
傳回
Promise<boolean>
generateSasUrl(ContainerGenerateSasUrlOptions)
僅適用于以共用金鑰認證建構的 ContainerClient。 根據傳入的用戶端屬性和參數,產生 Blob Container Service 共用存取簽章 (SAS) URI。 SAS 是由用戶端的共用金鑰認證所簽署。
function generateSasUrl(options: ContainerGenerateSasUrlOptions)
參數
- options
- ContainerGenerateSasUrlOptions
選用參數。
傳回
Promise<string>
SAS URI 是由此用戶端所代表之資源的 URI 所組成,後面接著產生的 SAS 權杖。
getAccessPolicy(ContainerGetAccessPolicyOptions)
取得指定容器的許可權。 這些權限指出是否可以公開存取容器資料。 警告:剖析 startOn 和 expiresOn 字串時,JavaScript 日期可能會失去有效位數。 例如,新的 Date (「2018-12-31T03:44:23.8827891Z」) .toISOString () 會取得 「2018-12-31T03:44:23.882Z」。
function getAccessPolicy(options?: ContainerGetAccessPolicyOptions)
參數
- options
- ContainerGetAccessPolicyOptions
容器取得存取原則作業的選項。
傳回
Promise<ContainerGetAccessPolicyResponse>
getAppendBlobClient(string)
建立 <xref:AppendBlobClient>
function getAppendBlobClient(blobName: string)
參數
- blobName
-
string
附加 Blob 名稱
傳回
getBlobBatchClient()
建立 BlobBatchClient 物件來執行批次作業。
function getBlobBatchClient()
傳回
這個容器的新 BlobBatchClient 物件。
getBlobClient(string)
建立 <xref:BlobClient>
function getBlobClient(blobName: string)
參數
- blobName
-
string
Blob 名稱
傳回
指定 Blob 名稱的新 BlobClient 物件。
getBlobLeaseClient(string)
<xref:BlobLeaseClient>取得管理容器租用的 。
function getBlobLeaseClient(proposeLeaseId?: string)
參數
- proposeLeaseId
-
string
初始建議的租用識別碼。
傳回
用於管理容器租用的新 BlobLeaseClient 物件。
getBlockBlobClient(string)
建立 <xref:BlockBlobClient>
function getBlockBlobClient(blobName: string)
參數
- blobName
-
string
區塊 Blob 名稱
使用方式範例:
const content = "Hello world!";
const blockBlobClient = containerClient.getBlockBlobClient("<blob name>");
const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
傳回
getPageBlobClient(string)
建立 <xref:PageBlobClient>
function getPageBlobClient(blobName: string)
參數
- blobName
-
string
分頁 Blob 名稱
傳回
getProperties(ContainerGetPropertiesOptions)
傳回指定容器的所有使用者定義中繼資料和系統屬性。 傳回的資料不包含容器的 Blob 清單。
function getProperties(options?: ContainerGetPropertiesOptions)
參數
- options
- ContainerGetPropertiesOptions
容器取得屬性作業的選項。
傳回
Promise<ContainerGetPropertiesResponse>
listBlobsByHierarchy(string, ContainerListBlobsOptions)
傳回非同步反覆運算器,依階層列出所有 Blob。 在指定的帳號底下。 .byPage () 會傳回非同步反覆運算器,依頁面的階層列出 Blob。
使用語法的 for await
範例:
for await (const item of containerClient.listBlobsByHierarchy("/")) {
if (item.kind === "prefix") {
console.log(`\tBlobPrefix: ${item.name}`);
} else {
console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
}
}
使用 iter.next()
的範例:
let iter = containerClient.listBlobsByHierarchy("/", { prefix: "prefix1/" });
let entity = await iter.next();
while (!entity.done) {
let item = entity.value;
if (item.kind === "prefix") {
console.log(`\tBlobPrefix: ${item.name}`);
} else {
console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
}
entity = await iter.next();
}
使用 byPage()
的範例:
console.log("Listing blobs by hierarchy by page");
for await (const response of containerClient.listBlobsByHierarchy("/").byPage()) {
const segment = response.segment;
if (segment.blobPrefixes) {
for (const prefix of segment.blobPrefixes) {
console.log(`\tBlobPrefix: ${prefix.name}`);
}
}
for (const blob of response.segment.blobItems) {
console.log(`\tBlobItem: name - ${blob.name}, last modified - ${blob.properties.lastModified}`);
}
}
使用頁面大小上限的分頁範例:
console.log("Listing blobs by hierarchy by page, specifying a prefix and a max page size");
let i = 1;
for await (const response of containerClient.listBlobsByHierarchy("/", { prefix: "prefix2/sub1/"}).byPage({ maxPageSize: 2 })) {
console.log(`Page ${i++}`);
const segment = response.segment;
if (segment.blobPrefixes) {
for (const prefix of segment.blobPrefixes) {
console.log(`\tBlobPrefix: ${prefix.name}`);
}
}
for (const blob of response.segment.blobItems) {
console.log(`\tBlobItem: name - ${blob.name}, last modified - ${blob.properties.lastModified}`);
}
}
function listBlobsByHierarchy(delimiter: string, options?: ContainerListBlobsOptions)
參數
- delimiter
-
string
用來定義虛擬階層的字元或字串
- options
- ContainerListBlobsOptions
列出 Blob 作業的選項。
傳回
PagedAsyncIterableIterator<Object & BlobPrefix | Object & BlobItem, ContainerListBlobHierarchySegmentResponse>
listBlobsFlat(ContainerListBlobsOptions)
傳回非同步反覆運算器,以列出指定帳戶下的所有 Blob。 .byPage () 會傳回非同步反覆運算器,以列出分頁中的 Blob。
使用語法的 for await
範例:
// Get the containerClient before you run these snippets,
// Can be obtained from `blobServiceClient.getContainerClient("<your-container-name>");`
let i = 1;
for await (const blob of containerClient.listBlobsFlat()) {
console.log(`Blob ${i++}: ${blob.name}`);
}
使用 iter.next()
的範例:
let i = 1;
let iter = containerClient.listBlobsFlat();
let blobItem = await iter.next();
while (!blobItem.done) {
console.log(`Blob ${i++}: ${blobItem.value.name}`);
blobItem = await iter.next();
}
使用 byPage()
的範例:
// passing optional maxPageSize in the page settings
let i = 1;
for await (const response of containerClient.listBlobsFlat().byPage({ maxPageSize: 20 })) {
for (const blob of response.segment.blobItems) {
console.log(`Blob ${i++}: ${blob.name}`);
}
}
搭配標記使用分頁的範例:
let i = 1;
let iterator = containerClient.listBlobsFlat().byPage({ maxPageSize: 2 });
let response = (await iterator.next()).value;
// Prints 2 blob names
for (const blob of response.segment.blobItems) {
console.log(`Blob ${i++}: ${blob.name}`);
}
// Gets next marker
let marker = response.continuationToken;
// Passing next marker as continuationToken
iterator = containerClient.listBlobsFlat().byPage({ continuationToken: marker, maxPageSize: 10 });
response = (await iterator.next()).value;
// Prints 10 blob names
for (const blob of response.segment.blobItems) {
console.log(`Blob ${i++}: ${blob.name}`);
}
function listBlobsFlat(options?: ContainerListBlobsOptions)
參數
- options
- ContainerListBlobsOptions
列出 Blob 的選項。
傳回
PagedAsyncIterableIterator<BlobItem, ContainerListBlobFlatSegmentResponse>
支援分頁的 asyncIterableIterator。
setAccessPolicy(PublicAccessType, SignedIdentifier[], ContainerSetAccessPolicyOptions)
設定指定容器的許可權。 這些權限指出是否可以公開存取容器中的 Blob。 當您設定容器的權限時,會取代現有的權限。 如果未提供任何存取權或 containerAcl,將會移除現有的容器 ACL。
當您在容器上建立儲存的存取原則時,可能需要 30 秒的時間才會生效。 在此間隔期間,與儲存的存取原則相關聯的共用存取簽章會失敗,並顯示狀態碼 403 (禁止),直到存取原則變成作用中為止。
function setAccessPolicy(access?: PublicAccessType, containerAcl?: SignedIdentifier[], options?: ContainerSetAccessPolicyOptions)
參數
- access
- PublicAccessType
容器中資料的公用存取層級。
- containerAcl
每個元素的陣列都有唯一的識別碼和存取原則的詳細資料。
- options
- ContainerSetAccessPolicyOptions
容器集存取原則作業的選項。
傳回
Promise<ContainerSetAccessPolicyResponse>
setMetadata(Metadata, ContainerSetMetadataOptions)
設定指定容器的一或多個使用者定義名稱/值組。 如果未提供任何選項,或參數中未定義任何中繼資料,則會移除容器中繼資料。
function setMetadata(metadata?: Metadata, options?: ContainerSetMetadataOptions)
參數
- metadata
- Metadata
以此值取代現有的中繼資料。 如果未提供任何值,則會移除現有的中繼資料。
- options
- ContainerSetMetadataOptions
容器集中繼資料作業的選項。
傳回
Promise<ContainerSetMetadataResponse>
uploadBlockBlob(string, HttpRequestBody, number, BlockBlobUploadOptions)
建立新的區塊 Blob,或更新現有區塊 Blob 的內容。 更新現有的區塊 Blob 會覆寫 Blob 中所有的現有中繼資料。 不支援部分更新;現有 Blob 的內容會以新內容覆寫。 若要執行區塊 Blob 的部分更新,請使用 <xref:BlockBlobClient.stageBlock> 和 <xref:BlockBlobClient.commitBlockList> 。
這是非平行上傳方法,請使用 <xref:BlockBlobClient.uploadFile> 或 <xref:BlockBlobClient.uploadStream><xref:BlockBlobClient.uploadBrowserData> ,以提升並行上傳的效能。
function uploadBlockBlob(blobName: string, body: HttpRequestBody, contentLength: number, options?: BlockBlobUploadOptions)
參數
- blobName
-
string
要建立或更新之區塊 Blob 的名稱。
- body
-
HttpRequestBody
Blob、字串、ArrayBuffer、ArrayBufferView 或函式,會傳回從資料來源開始位移的新可讀取資料流程。
- contentLength
-
number
內文的長度,以位元組為單位。 使用 Buffer.byteLength () 來計算字串的本文長度,包括非 Base64/Hex 編碼字元。
- options
- BlockBlobUploadOptions
設定區塊 Blob 上傳作業的選項。
傳回
Promise<Object>
區塊 Blob 上傳回應資料和對應的 BlockBlobClient 實例。