【问题标题】:Blob downloadToFile() not downloading large files NodejsBlob downloadToFile()不下载大文件Nodejs
【发布时间】:2020-12-23 08:57:31
【问题描述】:

我在我的项目中实现了** azure blob/storage**。它适用于较小的文件,但是当我尝试下载超过 40 MB 的文件时。它不会从 blob.downlaodToFile() 返回 这是我的代码。 API 调用

exports.downloadSingle = function(req,res){
  downloadService.downloadSingleFile(req.params.id).then(function (result) {
    res.send(result);
  })
}

下载服务

    var filesLocalLinks = [];
    const request = require('request-promise');
    const fs = require('fs');
    var download = require('download-file')
    let promise = new Promise((resolve, reject) => {
      filemodel.findOne({_id: id,cancelled: false}).exec(function(error,result){
        if(error){
          resolve(error);
        }else{
          
              blobDownload.downloadFile(result.blobName,result.containerName).then(function(blobResponse){
                var filename = path.resolve(__dirname+'/../services/uploads/'+result.fileName);
                   filename = filename.replace('/myProject','');
                   filename = process.env.BASE_URL+'/myProject/services'+filename.split('/services')[1];
                   resolve({file: filename, filename: result.originalname})
              }).catch(function(error){
                reject(error);
              })
        }
      })

    })
    let result =await promise;
    return {file: result.file,filename: result.filename };
  }

Blob 服务

    let promise = new Promise(async (resolve, reject) => {
    const account = process.env.BLOB_ACCOUNT;
    const accountKey = process.env.BLOB_ACCOUNT_KEY;
    const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
    const blobServiceClient = new BlobServiceClient(
      `https://${account}.blob.core.windows.net`,
      sharedKeyCredential
    );
    const containerClient = blobServiceClient.getContainerClient(containerName);
    const blockBlobClient = containerClient.getBlockBlobClient(blobName);
    const blobClient = containerClient.getBlobClient(blobName);
    var blobResponse = await blobClient.downloadToFile(blobName);
    resolve(blobResponse)
    })
    let result =await promise;
    return result;

  }

在 blob 服务中,这一行花费了太多时间页面响应页面不工作 var blobResponse = await blobClient.downloadToFile(blobName); 谁能帮帮我

【问题讨论】:

标签: node.js azure-blob-storage


【解决方案1】:

基本上代码流程是,首先将文件下载到我们的服务器目录,然后用户可以下载它。我发现代码工作正常,但问题是我们服务器的内存,随着我们增加内存,问题得到解决。但是我花了两天时间才弄明白

【讨论】:

    【解决方案2】:

    我突然发现了这个.. 但我注意到您将blobName 作为downloadToFile 调用的参数,而不是目标文件的名称,更不用说 const blockBlobClient = containerClient.getBlockBlobClient(blobName); 似乎是不必要的,这表明您没有正确查看自己的代码...

    【讨论】:

      猜你喜欢
      • 2021-01-04
      • 2022-01-11
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 2019-03-23
      相关资源
      最近更新 更多