1

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

任何帮助表示赞赏..谢谢!

4

1 回答 1

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

});

在 Lib 文件夹中创建一个具有名称的模块objectStorageHandler.js

里面objectStorageHandler.js写代码

var pkgcloud = require('pkgcloud');

var objectStorageHandler = 函数(){

}

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/download 即可下载图像,我们还可以在参数中传递图像名称以动态下载图像。

于 2016-09-09T12:21:14.297 回答