【问题标题】:How to access files stored in Bluemix Object Storage using Android?如何使用 Android 访问存储在 Bluemix Object Storage 中的文件?
【发布时间】:2016-06-26 04:25:02
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android ibm-cloud object-storage


    【解决方案1】:

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

    目前,还没有发布 Object Storage Android Client SDK。您可以在此处找到当前的对象存储 SDK:

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

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

    例如使用 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);
                    }
                });
            }
        };
    };
    

    【讨论】:

    • 谢谢@joe,但由于我不了解 Node.js 或其他类似的东西,我更喜欢一个简单的解决方案,我不需要在支持的部分上投入更多精力。
    • 此时没有 Android Client SDK,因此您唯一的选择是从您的 Android 应用程序使用 Bluemix 上记录的 REST API 或设置一个简单的后端。如果你想要这个功能,你可以在这里申请:ibm-bluemix.uservoice.com/forums/311383-ibm-bluemix-ideas
    • 是的,正确的@joe...将请求此功能..感谢您的帮助。
    【解决方案2】:

    如何使用 IBM Object Storage => Auth => 创建容器 => 上传对象

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      相关资源
      最近更新 更多