如何使用Node JS将Azure Blob存储中的文件下载到本地文件夹

时间:2019-04-04 11:29:09

标签: node.js azure-storage-blobs

我正在使用Node js将Azure Blob存储文件下载到我们的本地计算机中。我可以将其下载到我的项目路径中,但不能下载到我的本地计算机中。我正在使用html,Express和Node js。当前仅在本地主机上工作。如何下载?

下面是我用来将blob文件下载到本地文件夹的代码。

app.get("/downloadImage", function (req, res) {
    var fileName = req.query.fileName;
    var downloadedImageName = util.format('CopyOf%s', fileName);
    blobService.getBlobToLocalFile(containerName, fileName, downloadedImageName, function (error, serverBlob) {
    });
});

我能够将其下载到我的项目文件夹中,但我想将其下载到我的下载文件夹中。请帮我吗?

2 个答案:

答案 0 :(得分:0)

根据方法blobService.getBlobToLocalFile的引用,如下所示,参数localFileName的值应为具有相关目录路径的本地文件路径。

  

localFileName 字符串要下载的文件的本地路径

因此,我创建了一个名为downloadImages的目录,并如下更改了您的代码。

var downloadDirPath = 'downloadImages'; // Or the absolute dir path like `D:/downloadImages`

app.get("/downloadImage", function (req, res) {
    var fileName = req.query.fileName;
    var downloadedImageName = util.format('%s/CopyOf%s', path, fileName);
    blobService.getBlobToLocalFile(containerName, fileName, downloadedImageName, function (error, serverBlob) {
    });
});

它对我有用,图像文件已下载到我的downloadImages目录中,而不是在我的node app.js运行路径下。

注意:如果以后要在Azure WebApp上部署它,则必须使用D:/home/site/wwwroot/<your defined directory for downloading images>之类的绝对目录路径,因为相关的目录路径始终与IIS启动节点的路径相关。

答案 1 :(得分:0)

要从Azure blob存储下载文件

  • ConnectionString:Blob存储的连接字符串
  • blobContainer:Blob容器名称
  • sourceFile:容器中文件的名称,即sample-file.zip
  • destinationFilePath:保存文件的路径,即${appRoot}/download/${sourceFile}

const azure = require('azure-storage');

async function downloadFromBlob(
    connectionString,
    blobContainer,
    sourceFile,
    destinationFilePath,
  ) {
    logger.info('Downloading file from blob');
    const blobService = azure.createBlobService(connectionString);
    const blobName = blobContainer;
    return new Promise((resolve, reject) => {
      blobService.getBlobToLocalFile(blobName, sourceFile, destinationFilePath, (error, serverBlob) => {
        if (!error) {
          logger.info(`File downloaded successfully. ${destinationFilePath}`);
          resolve(serverBlob);
        }
        logger.info(`An error occured while downloading a file. ${error}`);
        reject(serverBlob);
      });
    });
  };