从客户端Javascript

时间:2016-06-24 14:16:06

标签: javascript node.js azure blob azure-storage-blobs

Azure存储包含以下代码的指南

        blobSvc.createBlockBlobFromLocalFile('mycontainer', 'myblob','test.txt', function(error, result, response){
      if(!error){
        // file uploaded
      }
    });

当我在项目中使用这段代码时,我收到一条错误消息:" ENOENT,没有这样的文件或目录' /main_900.jpg'"

我的代码看起来像这样

 var blobSvc = azure.createBlobService('<myStorageName>', '<myStorageKey>',
            'https://<myStorageName>.blob.core.windows.net/');

    blobSvc.createBlockBlobFromLocalFile('mycontrainer', 'blob', myScope.currentFile.name, function (error, result, response) {
                if (!error) {
                    var hey = "file was a success";// file uploaded
                } else {
                var oops = "error";
            }

        });

其中myScope.currentFile.name是我尝试上传的文件的名称(main_900.jpg)。我知道我的blobSvc是正确的,并连接到我的Azure存储,因为我能够创建一个包含代码的容器:

blobSvc.createContainerIfNotExists('mycontainer', function (error, result, response) {

        });

假设三个参数是什么?我相信我的输入正确。本地文件必须在哪里?我已在多个目录中尝试过它,并尝试将文件名更改为指向那里。似乎没有任何效果。任何人都可以指导我做错了吗?

以下是Microsoft指南的链接:https://azure.microsoft.com/en-us/documentation/articles/storage-nodejs-how-to-use-blob-storage/#upload-a-blob-into-a-container

1 个答案:

答案 0 :(得分:0)

您可以参考https://github.com/Azure/azure-storage-node/blob/master/lib/services/blob/blobservice.js#L2890的源代码了解详情。

前三个参数是:

* @param {string}   container        The container name.
* @param {string}   blob             The blob name.
* @param {string}   localFileName    The local path to the file to be uploaded.

BlobService.prototype.createBlockBlobFromLocalFile = function (container, blob, localFileName, optionsOrCallback, callback){
...
}

所以关于你的问题,它应该是路径问题。请仔细检查文件路径,您可以使用fs模块首先检查文件路径:

var fs = require('fs');

if (fs.existsSync(path)) {
    // Do something
}

如有任何疑问,请随时告诉我。