我正在使用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) {
});
});
我能够将其下载到我的项目文件夹中,但我想将其下载到我的下载文件夹中。请帮我吗?
答案 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存储下载文件
${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);
});
});
};