使用Node.js app

时间:2016-08-27 06:11:04

标签: node.js npm ibm-cloud object-storage

我在Bluemix上有一个Object Storage实例,我将图像存储在容器中。我需要一个存储在那里的图像的源URL,以便我可以使用该图像。要做到这一点,我想创建一个Node.js应用程序,这样我就可以编写一个帖子调用,在那里我将对象存储中的图像名称作为请求传递,这样它就会给我图像网址作为回应。  这可能吗?如果可能,任何人都可以建议是否有任何npm模块执行此功能?如果没有,是否有任何其他建议来获取图像的网址?

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:-1)

通过命令node app.js启动服务器,还需要包pkgcloud来执行此操作。只需在存储模块内的IBM控制台上创建密钥,即可获得对象存储凭据。 在app.js内插入新的下载路径

var  objectStorageHandler = require("./lib/objectStorageHandler.js");

app.get('/ download',function(req,res){

(new objectStorageHandler()).download('YourContainerName', 'imagenamewithextension',function(download){
    console.log(res);
    download.pipe(res);
});

});

Inside Lib文件夹中创建名为objectStorageHandler.js

的模块

objectStorageHandler.js内写代码

var pkgcloud = require('pkgcloud');

var objectStorageHandler = function(){

}

objectStorageHandler.prototype.download =  function(container, file,callback)
{
    var config = {
        provider: 'openstack',
        useServiceCatalog: true,
        useInternal: false,
        keystoneAuthVersion: 'v3',
        authUrl: 'https://identity.open.softlayer.com',
        tenantId: 'YOURPROJECTID',    //projectId from credentials
        domainId: 'YOURDOMAINID',
        username: 'YOURUSRNAME',
        password: 'YOURPASSWORD',
        region: 'dallas'   //dallas or london region
    };

var client = pkgcloud.storage.createClient(config);
client.auth(function (error) {
    if(error) {
        console.error("Authorization error for storage client (pkgcloud): ", error);
    }
    else {
        var request = client.download({
            container: container,
            remote: file
        });

        callback(request);
    }
});

}

module.exports = objectStorageHandler;

服务器启动后假设在端口3000只需调用localhost:3000 /下载即可下载图像,我们也可以在参数中传递图像名称以动态下载图像。