Nahrání objektu blob pomocí JavaScriptu nebo 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 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': '2022-07-18',
}
}
// 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 = {
// 'Hot', 'Cool', 'Cold', or 'Archive'
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 pro JavaScript nebo TypeScript
- Nahrání z vyrovnávací paměti pro JavaScript nebo TypeScript
- Nahrání ze streamu pro JavaScript nebo TypeScript
- Nahrání z řetězce pro JavaScript nebo TypeScript
- Nahrání s možnostmi přenosu pro JavaScript nebo TypeScript
- Nahrání pomocí značek indexu pro JavaScript nebo TypeScript
- Nahrání s úrovní přístupu pro JavaScript nebo TypeScript
Prostředky klientské knihovny
Viz také
- Správa a vyhledání dat objektů blob v Azure pomocí značek indexu objektů blob
- Použití značek indexu objektů blob ke správě a hledání dat ve službě Azure Blob Storage
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro JavaScript nebo TypeScript. Další informace najdete v úplném seznamu článků příručky pro vývojáře v tématu Sestavení aplikace JavaScript/TypeScript.