131 строка
3.9 KiB
JavaScript
131 строка
3.9 KiB
JavaScript
// Steps to run this sample
|
|
// 1. npm install
|
|
// 2. Enter your storage account name and shared key in main()
|
|
|
|
const {
|
|
Aborter,
|
|
BlobURL,
|
|
BlockBlobURL,
|
|
ContainerURL,
|
|
ServiceURL,
|
|
StorageURL,
|
|
SharedKeyCredential,
|
|
AnonymousCredential,
|
|
TokenCredential
|
|
} = require(".."); // Change to "@azure/storage-blob" in your package
|
|
|
|
async function main() {
|
|
// Enter your storage account name and shared key
|
|
const account = "account";
|
|
const accountKey = "accountkey";
|
|
|
|
// Use SharedKeyCredential with storage account and account key
|
|
const sharedKeyCredential = new SharedKeyCredential(account, accountKey);
|
|
|
|
// Use TokenCredential with OAuth token
|
|
const tokenCredential = new TokenCredential("token");
|
|
tokenCredential.token = "renewedToken"; // Renew the token by updating token field of token credential
|
|
|
|
// Use AnonymousCredential when url already includes a SAS signature
|
|
const anonymousCredential = new AnonymousCredential();
|
|
|
|
// Use sharedKeyCredential, tokenCredential or anonymousCredential to create a pipeline
|
|
const pipeline = StorageURL.newPipeline(sharedKeyCredential);
|
|
|
|
// List containers
|
|
const serviceURL = new ServiceURL(
|
|
// When using AnonymousCredential, following url should include a valid SAS or support public access
|
|
`https://${account}.blob.core.windows.net`,
|
|
pipeline
|
|
);
|
|
|
|
let marker;
|
|
do {
|
|
const listContainersResponse = await serviceURL.listContainersSegment(
|
|
Aborter.none,
|
|
marker
|
|
);
|
|
|
|
marker = listContainersResponse.nextMarker;
|
|
for (const container of listContainersResponse.containerItems) {
|
|
console.log(`Container: ${container.name}`);
|
|
}
|
|
} while (marker);
|
|
|
|
// Create a container
|
|
const containerName = `newcontainer${new Date().getTime()}`;
|
|
const containerURL = ContainerURL.fromServiceURL(serviceURL, containerName);
|
|
|
|
const createContainerResponse = await containerURL.create(Aborter.none);
|
|
console.log(
|
|
`Create container ${containerName} successfully`,
|
|
createContainerResponse.requestId
|
|
);
|
|
|
|
// Create a blob
|
|
const content = "hello";
|
|
const blobName = "newblob" + new Date().getTime();
|
|
const blobURL = BlobURL.fromContainerURL(containerURL, blobName);
|
|
const blockBlobURL = BlockBlobURL.fromBlobURL(blobURL);
|
|
const uploadBlobResponse = await blockBlobURL.upload(
|
|
Aborter.none,
|
|
content,
|
|
content.length
|
|
);
|
|
console.log(
|
|
`Upload block blob ${blobName} successfully`,
|
|
uploadBlobResponse.requestId
|
|
);
|
|
|
|
// List blobs
|
|
marker = undefined;
|
|
do {
|
|
const listBlobsResponse = await containerURL.listBlobFlatSegment(
|
|
Aborter.none,
|
|
marker
|
|
);
|
|
|
|
marker = listBlobsResponse.nextMarker;
|
|
for (const blob of listBlobsResponse.segment.blobItems) {
|
|
console.log(`Blob: ${blob.name}`);
|
|
}
|
|
} while (marker);
|
|
|
|
// Get blob content from position 0 to the end
|
|
// In Node.js, get downloaded data by accessing downloadBlockBlobResponse.readableStreamBody
|
|
// In browsers, get downloaded data by accessing downloadBlockBlobResponse.blobBody
|
|
const downloadBlockBlobResponse = await blobURL.download(Aborter.none, 0);
|
|
console.log(
|
|
"Downloaded blob content",
|
|
await streamToString(downloadBlockBlobResponse.readableStreamBody)
|
|
);
|
|
|
|
// Delete container
|
|
await containerURL.delete(Aborter.none);
|
|
|
|
console.log("deleted container");
|
|
}
|
|
|
|
// A helper method used to read a Node.js readable stream into string
|
|
async function streamToString(readableStream) {
|
|
return new Promise((resolve, reject) => {
|
|
const chunks = [];
|
|
readableStream.on("data", data => {
|
|
chunks.push(data.toString());
|
|
});
|
|
readableStream.on("end", () => {
|
|
resolve(chunks.join(""));
|
|
});
|
|
readableStream.on("error", reject);
|
|
});
|
|
}
|
|
|
|
// An async method returns a Promise object, which is compatible with then().catch() coding style.
|
|
main()
|
|
.then(() => {
|
|
console.log("Successfully executed sample.");
|
|
})
|
|
.catch(err => {
|
|
console.log(err.message);
|
|
});
|