【发布时间】: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);
谁能帮帮我
【问题讨论】:
-
您可以使用
download方法读取流中的blob内容:docs.microsoft.com/en-us/javascript/api/@azure/storage-blob/… -
我知道了,是内存问题
-
既然问题已经解决了,能否发表一下你的答案?
标签: node.js azure-blob-storage