Blob letöltése TypeScripttel
Ez a cikk bemutatja, hogyan tölthet le egy blobot a JavaScripthez készült Azure Storage ügyfélkódtár használatával. Blobadatokat különböző célhelyekre tölthet le, például helyi fájlelérési utat, streamet vagy szöveges sztringet.
Előfeltételek
- A cikkben szereplő példák feltételezik, hogy már van egy projektje, amely a JavaScripthez készült Azure Blob Storage ügyfélkódtárral való együttműködésre van beállítva. A projekt beállításáról, beleértve a csomagtelepítést, a modulok importálását és egy engedélyezett ügyfélobjektum létrehozását az adaterőforrásokkal való munkához, olvassa el az Ismerkedés a Azure Blob Storage és a TypeScript használatával című témakört.
- Az engedélyezési mechanizmusnak rendelkeznie kell a letöltési művelet végrehajtásához szükséges engedélyekkel. További információért tekintse meg az alábbi REST API-művelet engedélyezési útmutatóját:
Blob letöltése
A blobok letöltéséhez az alábbi módszerek bármelyikét használhatja:
- BlobClient.download
- BlobClient.downloadToBuffer (csak Node.js futtatókörnyezetben érhető el)
- BlobClient.downloadToFile (csak Node.js futtatókörnyezetben érhető el)
Letöltés fájlelérési útra
Az alábbi példa egy blobot tölt le egy blob elérési útján a BlobClient.downloadToFile metódussal. Ez a módszer csak a Node.js futtatókörnyezetben érhető el:
async function downloadBlobToFile(
containerClient: ContainerClient,
blobName,
fileNameWithPath
): Promise<void> {
const blobClient = await containerClient.getBlobClient(blobName);
const downloadResult = await blobClient.downloadToFile(fileNameWithPath);
if (!downloadResult.errorCode) {
console.log(
`download of ${blobName} success ${downloadResult.blobCommittedBlockCount}`
);
}
}
Letöltés streamként
Az alábbi példa egy blobot tölt le egy Node.js írható streamobjektum létrehozásával, majd a BlobClient.download metódussal a streambe való betöltéssel.
async function downloadBlobAsStream(
containerClient: ContainerClient,
blobName,
writableStream
) {
const blobClient: BlobClient = await containerClient.getBlobClient(blobName);
const downloadResponse = await blobClient.download();
if (!downloadResponse.errorCode && downloadResponse?.readableStreamBody) {
downloadResponse.readableStreamBody.pipe(writableStream);
console.log(`download of ${blobName} succeeded`);
}
}
Letöltés sztringre
Az alábbi Node.js példa egy BlobClient.download metódussal rendelkező sztringre tölt le egy blobot. A Node.js a blobadatok egy értékben readableStreamBody
térnek vissza.
async function downloadBlobToString(
containerClient: ContainerClient,
blobName
): Promise<void> {
const blobClient: BlobClient = await containerClient.getBlobClient(blobName);
const downloadResponse: BlobDownloadResponseParsed =
await blobClient.download();
if (!downloadResponse.errorCode && downloadResponse.readableStreamBody) {
const downloaded = await streamToBuffer(
downloadResponse.readableStreamBody
);
if (downloaded) {
console.log('Downloaded blob content:', downloaded.toString());
}
}
}
async function streamToBuffer(readableStream) {
return new Promise((resolve, reject) => {
const chunks: Buffer[] = [];
readableStream.on('data', (data) => {
const content: Buffer = data instanceof Buffer ? data : Buffer.from(data);
chunks.push(content);
});
readableStream.on('end', () => {
resolve(Buffer.concat(chunks));
});
readableStream.on('error', reject);
});
}
Ha JavaScripttel dolgozik a böngészőben, a blobadatok ígéretes blobBody-ban térnek vissza. További információért tekintse meg a blobClient.download böngészőkre vonatkozó példahasználatát.
Források
A blobok JavaScripthez és TypeScripthez készült Azure Blob Storage ügyfélkódtár használatával történő letöltéséről az alábbi forrásokban talál további információt.
REST API-műveletek
A JavaScripthez és TypeScripthez készült Azure SDK olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, és lehetővé teszik a REST API-műveletek használatát a jól ismert nyelvi paradigmákon keresztül. A blobok letöltéséhez használt ügyfélkódtár-metódusok a következő REST API-műveletet használják:
- Blob lekérése (REST API)
Kódminták
A cikk kódmintáinak megtekintése (GitHub):