Nahrání objektu blob pomocí TypeScriptu
Tento článek ukazuje, jak nahrát objekt blob pomocí klientské knihovny azure Storage pro JavaScript. Data můžete nahrát do objektu blob bloku z cesty k souboru, datového proudu, vyrovnávací paměti nebo textového řetězce. Objekty blob můžete také nahrát se značkami indexu.
Požadavky
- Příklady v tomto článku předpokládají, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou Azure Blob Storage pro JavaScript. Další informace o nastavení projektu, včetně instalace balíčku, importu modulů a vytvoření autorizovaného klientského objektu pro práci s datovými prostředky, najdete v tématu Začínáme se službou Azure Blob Storage a TypeScriptem.
- Autorizační mechanismus musí mít oprávnění k provedení operace nahrávání. Další informace najdete v pokynech k autorizaci pro následující operace rozhraní REST API:
Nahrání dat do objektu blob bloku
K nahrání dat do objektu blob bloku můžete použít některou z následujících metod:
- upload (metoda ne parallel uploading)
- uploadData
- uploadFile (k dispozici pouze v modulu runtime Node.js)
- uploadStream (k dispozici pouze v Node.js runtime)
Každou z těchto metod lze volat pomocí BlockBlobClient objektu.
Nahrání objektu blob bloku z cesty k souboru
Následující příklad nahraje objekt blob bloku z místní cesty k souboru:
async function uploadBlobFromLocalPath(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath);
}
Nahrání objektu blob bloku ze streamu
Následující příklad nahraje objekt blob bloku tak, že vytvoří čitelný datový proud a nahraje stream:
async function uploadBlobFromReadStream(
containerClient: ContainerClient,
blobName: string,
readStream: fs.ReadStream
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadStream(readStream);
}
Nahrání objektu blob bloku z vyrovnávací paměti
Následující příklad nahraje objekt blob bloku z vyrovnávací paměti Node.js:
async function uploadBlobFromBuffer(
containerClient: ContainerClient, blobName: string, buffer: Buffer
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload buffer
await blockBlobClient.uploadData(buffer);
}
Nahrání objektu blob bloku z řetězce
Následující příklad nahraje objekt blob bloku z řetězce:
async function uploadBlobFromString(
containerClient: ContainerClient,
blobName: string,
fileContents: string
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.upload(fileContents, fileContents.length);
}
Nahrání objektu blob bloku s možnostmi konfigurace
Při nahrávání objektu blob můžete definovat možnosti konfigurace klientské knihovny. Tyto možnosti je možné ladit, aby se zlepšil výkon, zlepšila spolehlivost a optimalizovala náklady. Příklady kódu v této části ukazují, jak nastavit možnosti konfigurace pomocí blockBlobParallelUploadOptions rozhraní a jak tyto možnosti předat jako parametr volání metody upload.
Určení možností přenosu dat při nahrání
Vlastnosti v BlockBlobParallelUploadOptions můžete nakonfigurovat tak, aby se zlepšil výkon operací přenosu dat. V následující tabulce jsou uvedeny vlastnosti, které můžete konfigurovat, spolu s popisem:
Vlastnost | Popis |
---|---|
blockSize |
Maximální velikost bloku, která se má přenést pro každý požadavek v rámci operace nahrávání. |
concurrency |
Maximální počet paralelních požadavků vydaných v daném okamžiku jako součást jednoho paralelního přenosu. |
maxSingleShotSize |
Pokud je velikost dat menší nebo rovna této hodnotě, nahraje se místo rozdělení do bloků dat do jediného umístění. Pokud se data nahrají na jeden snímek, velikost bloku se ignoruje. Výchozí hodnota je 256 MiB. |
Následující příklad kódu ukazuje, jak nastavit hodnoty BlockBlobParallelUploadOptions a zahrnout možnosti jako součást volání metody upload. Hodnoty uvedené v ukázkách nejsou určené jako doporučení. Pokud chcete tyto hodnoty správně vyladit, musíte zvážit konkrétní potřeby vaší aplikace.
async function uploadWithTransferOptions(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Specify data transfer options
const uploadOptions: BlockBlobParallelUploadOptions = {
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
concurrency: 2, // maximum number of parallel transfer workers
maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
};
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Nahrání objektu blob bloku se značkami indexu
Značky indexu objektů blob kategorizují data v účtu úložiště pomocí atributů značek klíč-hodnota. Tyto značky se automaticky indexují a zveřejňují jako prohledávatelný multidimenzionální index, aby bylo možné snadno najít data.
Následující příklad nahraje objekt blob bloku se značkami indexu nastavenými pomocí BlockBlobParallelUploadOptions:
async function uploadBlobWithIndexTags(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Specify index tags for blob
const uploadOptions: BlockBlobParallelUploadOptions = {
tags: {
'Sealed': 'false',
'Content': 'image',
'Date': '2023-06-01',
}
};
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Nastavení úrovně přístupu k objektu blob při nahrání
Úroveň přístupu objektu blob můžete nastavit při nahrávání pomocí rozhraní BlockBlobParallelUploadOptions . Následující příklad kódu ukazuje, jak nastavit úroveň přístupu při nahrávání objektu blob:
async function uploadBlobWithAccessTier(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Upload blob to 'Cool' access tier
const uploadOptions: BlockBlobParallelUploadOptions = {
tier: 'Cool'
};
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Nastavení úrovně přístupu je povolené jenom pro objekty blob bloku. Úroveň přístupu objektu blob bloku můžete nastavit na Hot
, Cool
, Cold
nebo Archive
. Pokud chcete nastavit úroveň Cold
přístupu, musíte použít minimální verzi klientské knihovny 12.13.0.
Další informace o úrovních přístupu najdete v tématu Přehled úrovní přístupu.
Zdroje informací
Další informace o nahrávání objektů blob pomocí klientské knihovny služby Azure Blob Storage pro JavaScript a TypeScript najdete v následujících zdrojích informací.
Operace rozhraní REST API
Sada Azure SDK pro JavaScript a TypeScript obsahuje knihovny, které jsou založené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých jazykových paradigmat. Metody klientské knihovny pro nahrávání objektů blob používají následující operace rozhraní REST API:
- Vložení objektu blob (REST API)
- Put Block (REST API)
Ukázky kódu
Prohlédněte si ukázky kódu z tohoto článku (GitHub):
- Nahrání z místní cesty k souboru
- Nahrání z vyrovnávací paměti
- Nahrání ze streamu
- Nahrání z řetězce
- Nahrání s možnostmi přenosu
- Nahrání se značkami indexu
- Nahrání s úrovní přístupu