Nahrání objektu blob pomocí JavaScriptu
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 JavaScriptem.
- 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:
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadBlobFromLocalPath(containerClient, blobName, localFilePath){
// Create blob client from container client
const 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:
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// readableStream: Readable stream, for example, a stream returned from fs.createReadStream()
async function uploadBlobFromReadStream(containerClient, blobName, readableStream) {
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload data to block blob using a readable stream
await blockBlobClient.uploadStream(readableStream);
}
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:
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// buffer: blob contents as a buffer, for example, from fs.readFile()
async function uploadBlobFromBuffer(containerClient, blobName, buffer) {
// Create blob client from container client
const 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:
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// fileContentsAsString: blob content
async function uploadBlobFromString(containerClient, blobName, fileContentsAsString){
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.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.
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithTransferOptions(containerClient, blobName, localFilePath) {
// Specify data transfer options
const uploadOptions = {
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 = containerClient.getBlockBlobClient(blobName);
// Upload blob with transfer options
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Další informace o ladění možností přenosu dat najdete v tématu Ladění výkonu pro nahrávání a stahování pomocí JavaScriptu.
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:
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithIndexTags(containerClient, blobName, localFilePath) {
// Specify index tags for blob
const uploadOptions = {
tags: {
'Sealed': 'false',
'Content': 'image',
'Date': '2023-06-01',
}
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with index tags
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:
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithAccessTier(containerClient, blobName, localFilePath) {
// Specify access tier
const uploadOptions = {
tier: 'Cool',
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob to cool tier
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 najdete v následujících zdrojích informací.
Operace rozhraní REST API
Sada Azure SDK pro JavaScript obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat JavaScriptu. 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
Prostředky klientské knihovny
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro