【问题标题】:Uploading a Blob to Azure storage doesnt work for local development emulator using NodeJs将 Blob 上传到 Azure 存储不适用于使用 NodeJs 的本地开发模拟器
【发布时间】:2016-10-11 07:31:13
【问题描述】:

我正在尝试使用 NodeJs 将本地文件上传到 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 中是真实的存储信息,则可以正常工作,但如果它在本地开发存储中,则会引发“找不到指定的资源”错误。

非常感谢任何帮助。 谢谢

【问题讨论】:

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


【解决方案1】:

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

这里是sn-p的代码:

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)
  }
})

【讨论】:

  • 我运行了存储模拟器。 Blob 的相关信息由运行在同一台机器上的另一个应用程序提供。
  • 在尝试我的代码 sn-p 后你还有问题吗?您能否提供您的result 模拟器信息
猜你喜欢
  • 2020-05-20
  • 2021-09-29
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2016-10-02
  • 2019-04-13
  • 2012-03-22
相关资源
最近更新 更多