2016-06-26 13 views
1

私はクラウドからデータをフェッチしたいAndroidアプリで作業しています。 私はBluemix Object Storageに自分のデータを保存しましたが、単純な方法でデータにアクセスする方法については助けを得ていませんでした。Androidを使用してBluemixオブジェクトストレージに保存されているファイルにアクセスする方法は?

AWS S3ストレージサービスも試しました。それは簡単なコンソールを持っています。ここで、このようなAndroidアプリからアクセスするファイルのURLを取得できます。

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

BluemixでファイルのURLを取得するにはどのような方法はありますか?

答えて

0

アプリケーションをどのように構築したかによって、問題の解決策がいくつかあります。

現時点では、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 IBMオブジェクトストレージを使用する方法

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

Node.jsや他のものについて私が気づいていないので、バックパートにもっと力を入れる必要がない単純なソリューションが好きです。 – Ritesh

+0

現在のところAndroidクライアントSDKはありません。そのため、AndroidアプリケーションのBluemixに記載されているREST APIを使用するか、単純なバックエンドを設定するだけです。この機能を機能として使用する場合は、https://ibm-bluemix.uservoice.com/forums/311383-ibm-bluemix-ideas – joe

+0

を入力してください。正しい@joe ...はこの機能を要求します。あなたの助け。 – Ritesh

0

= >認証=>コンテナの作成=>オブジェクトのアップロード

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); 
} 
}); 
関連する問題