使用NodeJS(CompoundJS)将blob上传到windows azure容器

时间:2014-01-20 06:30:51

标签: node.js azure compoundjs

我正在为我的应用程序使用CompoundJS,现在尝试实现一个脚本 将图像从compoundjs上传到azure blob。

我搜索了网页,发现有一个模块azure(npm install azure) 如this link中所述。

以下是我在我的应用程序中使用的代码段

var azure = require("azure");
var blobService = azure.createBlobService();
blobService.createContainerIfNotExists('container_name', {publicAccessLevel : 'blob'}, function(error){
    if(!error){
        // Container exists and is public
        console.log("Container Exists");
    }
});

我知道我应该在ACCESS KEY配置一些工作,但不确定在哪里。

请建议。

2 个答案:

答案 0 :(得分:1)

您需要提供这样的帐户名称/密钥:

var blobService = azure.createBlobService('accountname', 'accountkey');

您可以在此处查看源代码:https://github.com/WindowsAzure/azure-sdk-for-node/blob/master/lib/azure.js

答案 1 :(得分:0)

提供存储访问凭据的方法有多种。我正在使用环境变量来设置帐户名称和密钥。

以下是我使用bash设置环境变量的方法:

echo Exporting Azure Storage variables ...

export AZURE_STORAGE_ACCOUNT='YOUR_ACCOUNT_NAME'

export AZURE_STORAGE_ACCESS_KEY='YOUR_ACCESS_KEY'

echo Done exporting Azure Storage variables

这是一个示例node.js脚本,我用它来生成存储为Azure blob的现有图像的缩略图,使用imagemagick:

var azure = require('azure');
var im = require('imagemagick');
var fs = require('fs');
var rt = require('runtimer');
//Blobservice init

var blobService = azure.createBlobService();

var convertPath = '/usr/bin/convert';

var identifyPath = '/usr/bin/identify';

global.once = false;


var blobs = blobService.listBlobs("screenshots", function (error, blobs) {

    if (error) {
        console.log(error);
    }

    if (!error) {
        blobs.forEach(function (item) {

            if (item.name) {

                if (item.name.length == 59) {

                    //Create the name for the thum                  
                    var thumb = item.name.substring(0, item.name.indexOf('_')) + '_thumb.png';
                    if (!global.once) {
                        console.log(global.once);
                        var info = blobService.getBlobToFile("YOUR CONTAINER", item.name, item.name,
                            function (error, blockBlob, response) {
                                im.resize({
                                    srcPath: item.name,
                                    dstPath: thumb,
                                    width: 100,
                                    height: 200
                                },
                                    function (err, sdout, stderr) {
                                        if (err) throw err;
                                        console.log("resized");
                                        //Delete the downloaded BIG one
                                        fs.unlinkSync(item.name);


                                        //Upload the thumbnail
                                        blobService.putBlockBlobFromFile("YOUR CONTAINER", thumb, thumb,
                                                         function (error, blockBlob, response) {

                                                             if (!error) {
                                                                 console.log("blob uploaded: " + thumb);
                                                                 fs.unlinkSync(thumb);
                                                             }

                                                         });
                                    });

                            });

                        //DEBUG: Uncomment to test only with one file
                        //global.once = true;

                    }


                }
            }
        });
    }
});

以下是Azure模块的官方链接(包含一些示例):

Windows Azure Client Library for node