Blob downloadToFile()未下载大型文件Nodejs



我已经在我的项目中实现了**azure blob/storage**。它在较小的文件上运行良好,但当我尝试下载超过40 MB的文件时。它不会从blob.downloadToFile((返回这是我的密码。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);有人能帮我吗

基本上,代码流是,首先将文件下载到我们的服务器目录,然后用户可以下载。我发现代码运行良好,但问题是我们服务器的内存,随着内存的增加,问题得到了解决。但我花了两天时间才弄清楚

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

最新更新