Reactjs 如何从 Azure 存储容器下载文件

Reactjs How to download file from Azure Storage Container

我正在处理 reactjs/typescript 应用程序。我正在尝试从 azure storage v2 下载一些文件。下面是我应该下载文件的示例路径。该路径中,enrichment为容器名,其余均为文件夹。我正在尝试从 reportdocument 文件夹下载最后修改的文件。

enrichment/report/SAR-1234-56/reportdocument/file1.docs

我尝试了下面的方法。

@action
    public async reportDownload(sarNumber: string) {
        let storage = globals.getGlobals('StorageAccount03');
        console.log(storage);
        let containerName = globals.getGlobals('StorageAccount03ContainerName');
        let marker = undefined;
        let allUploadPromise: Array<Promise<unknown>> = [];
        const config = {
            path: `/Storage/getsastoken/?storageName=${storage}&containerName=${containerName}`,
            method: "GET",
            success: (url: any) => {

                const containerURL: ContainerURL = new ContainerURL(
                    url,
                    StorageURL.newPipeline(new AnonymousCredential()));
                 
                const listBlobsResponse =  containerURL.listBlobFlatSegment(
                    Aborter.none,
                    marker,
                );
            }
        };
        await handleRequest(config);
    }

从这里开始,我正在努力从上述路径下载最新修改的文​​件。 有人可以帮我解决这个问题吗?任何帮助将不胜感激。谢谢

详情最好用@azure/storage-blob library and then the code would be something like below instead of directly trying to call blob REST API like you were trying in your code which seems unnecessary reinventing the wheel. The library already does it for you. Refer this

const { BlobServiceClient } = require("@azure/storage-blob");
 
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const containerName = "<container name>";
const blobName = "<blob name>";
 
const blobServiceClient = new BlobServiceClient(`https://${account}.blob.core.windows.net${sas}`);
 
async function download() {
  const containerClient = blobServiceClient.getContainerClient(containerName);
  const blobClient = containerClient.getBlobClient(blobName);
 
  // Get blob content from position 0 to the end
  // In browsers, get downloaded data by accessing downloadBlockBlobResponse.blobBody
  const downloadBlockBlobResponse = await blobClient.download();
  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);
    });
  }
}