Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak nahrát objekt blob pomocí klientské knihovny azure Storage pro JavaScript. Data můžete nahrát do blokového blobu 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 blokového blobu
K nahrání dat do objektu blob bloku můžete použít některou z následujících metod:
- upload (metoda neparalelního uploadu)
- 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.
Poznámka:
Klientské knihovny Azure Storage nepodporují souběžné zápisy do stejného objektu blob. Pokud vaše aplikace vyžaduje více procesů zápisů do stejného objektu blob, měli byste implementovat strategii řízení souběžnosti, která poskytuje předvídatelné prostředí. Další informace o strategiích souběžnosti najdete v tématu Správa souběžnosti ve službě Blob Storage.
Nahrát blokový blob z cesty k souboru
Následující příklad nahraje blokový blob 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í blokového blobu ze streamu
Následující příklad nahraje blokový blob vytvořením čitelného proudu dat a nahráním tohoto proudu.
// 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í blokového blobu z vyrovnávací paměti
Následující příklad nahraje blokový objekt blob z bufferu 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í blokového objektu blob z řetězce
Následující příklad nahraje blokový blob 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át blokový objekt blob 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ě, nahrají se vcelku, místo aby byla rozdělena na části. 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át blokový blob se značkami indexu
Značky indexu 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 blokový objekt blob s nastavenými indexovými značkami 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);
}
Nastavit úroveň přístupu 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 přístupovou vrstvu při nahrávání blobu.
// 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 blokové blob objekty. Úroveň přístupu objektu blob bloku můžete nastavit na Hot, Cool, Coldnebo Archive. Pokud chcete nastavit úroveň Coldpří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:
Ukázky kódu
Prohlédněte si ukázky kódu z tohoto článku (GitHub):
- Nahrávání souboru z místní cesty pro JavaScript nebo TypeScript
- Nahrát z vyrovnávací paměti pro JavaScript nebo TypeScript
- Nahrává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í s indexovými značkami pro JavaScript nebo TypeScript
- Nahrání s úrovní přístupu pro JavaScript nebo TypeScript
Prostředky klientské knihovny
Viz také
- Spravujte a hledejte data 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.