【发布时间】:2021-05-22 00:34:27
【问题描述】:
我正在关注本教程并尝试了解如何在本地计算机上下载 blob 文件
这是一个使用 JavaScript 的网络应用程序。
以下代码行运行良好,我可以在 console.log 中看到文件的内容 我希望用户能够将文件下载到他们的本地计算机,而不是在 console.log 中看到它。所以也许给一个路径之类的。
我已经注释了我需要帮助的代码。它运行但什么也不做。我没有看到要下载到本地的消息。
const downloadFiles = async () => {
if (fileList.selectedOptions.length > 0) {
//reportStatus("downloading files...");
for (const option of fileList.selectedOptions) {
console.log("option.text", option.text);
try {
const blobClient = containerClient.getBlobClient(option.text);
console.log("BlobClient",blobClient)
// Hoping this line of code would do the trick
var blobResponse = await blobClient.downloadToFile(option.text);
//////
const downloadBlockBlobResponse = await blobClient.download();
console.log("downloadBlockBlobResponse", downloadBlockBlobResponse);
const downloaded = await blobToString(await downloadBlockBlobResponse.blobBody);
console.log("Downloaded blob to string content", downloaded);
// [Browsers only] A helper method used to convert a browser Blob into string.
async function blobToString(blob) {
const fileReader = new FileReader();
return new Promise((resolve, reject) => {
fileReader.onloadend = (ev) => {
resolve(ev.target.result);
};
fileReader.onerror = reject;
fileReader.readAsText(blob);
});
}
// [Node.js only] A helper method used to read a Node.js readable stream into a Buffer
async function streamToBuffer(readableStream) {
return new Promise((resolve, reject) => {
const chunks = [];
readableStream.on("data", (data) => {
chunks.push(data instanceof Buffer ? data : Buffer.from(data));
});
readableStream.on("end", () => {
resolve(Buffer.concat(chunks));
});
readableStream.on("error", reject);
});
}
}
catch (error) {
reportStatus(error.message);
}
}
reportStatus("Done.");
listFiles();
} else {
reportStatus("No files selected.");
}
/*
//const containerClient = blobServiceClient.getContainerClient(containerName);
//console.log("containerClient", containerClient);
const blobName = // "MyTest1.csv";
const blobClient = containerClient.getBlobClient(blobName);
console.log("blobClient", blobClient);
try {
const downloadBlockBlobResponse = await blobClient.download();
console.log("downloadBlockBlobResponse", downloadBlockBlobResponse);
const downloaded = await blobToString(await downloadBlockBlobResponse.blobBody);
console.log("Downloaded blob content", downloaded);
// [Browsers only] A helper method used to convert a browser Blob into string.
async function blobToString(blob) {
const fileReader = new FileReader();
return new Promise((resolve, reject) => {
fileReader.onloadend = (ev) => {
resolve(ev.target.result);
};
fileReader.onerror = reject;
fileReader.readAsText(blob);
});
}
} catch (error) {
reportStatus(error.message);
}
*/
};
【问题讨论】:
-
嗨弗兰克,这帮助了很多人。太感谢了。接受答案。
标签: javascript azure-blob-storage azure-storage-account azure-storage-files