如何使用 Android 访问存储在 Bluemix 对象存储中的文件?

How to access files stored in Bluemix Object Storage using Android?

我正在开发一个 Android 应用程序,我想在其中从云端获取数据。 我将数据存储在 Bluemix Object Storage 中,但没有获得有关如何以简单方式访问数据的任何帮助。

我也试过 AWS S3 存储服务。它有一个简单的控制台,我可以在其中获取文件的 URL,以便像这样从 Android 应用程序访问它。

https://s3-ap-southeast-1.amazonaws.com/com.myapp/540.mp4

有没有这种方法可以在 Bluemix 中获取文件 URL?

根据您构建应用程序的方式,您的问题有多种可能的解决方案。

此时,没有发布对象存储 Android 客户端 SDK。您可以在此处找到当前的对象存储 SDK:

https://github.com/ibm-bluemix-mobile-services

根据您设置的后端,您可以轻松设置代理路由器,安全地连接到您的对象存储服务实例并将输出路由到 URL,您的 [=35] 可以使用=]申请。

例如使用 pkgcloud 和 Node.js 后端:

routes.js

var vcap_objectstorage = require('../utils/vcap')('Object-Storage'),
    objectstorage = require('../modules/objectstorage');

module.exports = function(app) {
    var router = app.loopback.Router();

    // proxy for object storage service
    router.get('/api/Products/image/:container/:file', function(req, res) {
        objectstorage(vcap_objectstorage.credentials).download(req.params.container, req.params.file, function(download) {
            download.pipe(res);
        });
    });

    app.use(router);
}

objectstorage.js

var pkgcloud = require('pkgcloud');

module.exports = function(creds) {
    var config = {
        provider: 'openstack',
        useServiceCatalog: true,
        useInternal: false,
        keystoneAuthVersion: 'v3',
        authUrl: creds.auth_url,
        tenantId: creds.projectId,
        domainId: creds.domainId,
        username: creds.username,
        password: creds.password,
        region: creds.region
    };

    return {
        download: function(container, file, cbk) {
            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
                    });

                    cbk(request);
                }
            });
        }
    };
};

如何使用 IBM 对象存储 => 验证 => 创建容器 => 上传对象

var pkgcloud = require('pkgcloud');

var config = {
provider: 'openstack',
useServiceCatalog: true,
useInternal: false,
keystoneAuthVersion: 'v3',
authUrl: 'https://identity.open.softlayer.com',
tenantId: 'XXXXXXXXXXXXXX', //projectId from credentials
domainId: 'XXXXXXXXXXXXX',
username: 'XXXXXXXXXXXXXXX',
password: 'XXXXXXXXXXXXXXXX',
region: 'dallas' //dallas or london region
};

var storageClient = pkgcloud.storage.createClient(config);

storageClient.auth(function(err) {
if (err) {
console.error('error'+err);
}
else {
console.log(storageClient._identity);
}
});

var fs = require('fs');
storageClient.createContainer({
name: 'XXXXXXX'
}, function (err, container) {

if (err) {
console.error(err);
}
else {
var myFile = fs.createReadStream('/home/amit/Downloads/cloud-app-developer.png');
var upload = storageClient.upload({
container: container.name,
remote: 'cloud-app-developer.png'
});
upload.on('error', function(err) {
console.error(err);
});
upload.on('success', function(file) {
console.log(file.toJSON());
});
myFile.pipe(upload);
}
});