将Blob上传到Azure存储对于使用NodeJ的本地开发模拟器不起作用

时间:2016-06-10 10:51:48

标签: node.js azure azure-storage azure-storage-blobs blobstorage

我正在尝试使用NodeJ将本地文件上传到blob存储。服务器向我发送以下详细信息

{hostName: "StorageAccount", containerName:"containerName", "blobName": blobName, sasToken: "sasToken"}

以下是为上传文件而编写的代码

var azure = require('azure-storage');
var blobSvc = azure.createBlobServiceWithSas(result.hostName,result.sasToken);
blobSvc.createBlockBlobFromLocalFile(result.containerName,result.blobName,'server.json', 
function(error, result, response){
  if(!error){
   // file uploaded
 }
});

如果上面的代码在Azure中是真实的存储信息,则可以正常工作,但如果它在本地开发存储上,则会抛出“未找到指定的资源”错误。

非常感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:1)

要在Node.js中使用Azure存储模拟器进行开发,请确保首先启动本地模拟器(有关详细信息,请参阅https://azure.microsoft.com/en-us/documentation/articles/storage-use-emulator/),并尝试利用generateDevelopmentStorageCredentials()创建连接可用于创建在存储模拟器上运行的服务的字符串。必须单独下载模拟器。

以下是代码段:

var azure = require('azure-storage');
var fs = require('fs');

var devStoreCreds = azure.generateDevelopmentStorageCredentials();
var blobsrv = azure.createBlobService(devStoreCreds);

blobsrv.createContainerIfNotExists('container', {
  publicAccessLevel: 'blob'
}, function(error, result, response) {
  if (!error) {
    blobsrv.createBlockBlobFromLocalFile('container', <blobname>, <filepath>, function (error, result, response) {
            if (!error) {
                console.log("Uploaded" + result);
            }
            else {
                console.log(error);
            }
        }); 
  }else{
    console.log(error)
  }
})