2016-06-26 28 views
1

我正在開發一個Android應用程序,我想從雲端獲取數據。 我將數據存儲在Bluemix Object Storage中,但沒有獲得任何有關如何以簡單方式訪問數據的幫助。如何訪問使用Android存儲在Bluemix Object Storage中的文件?

我也試過AWS S3存儲服務。它有一個簡單的控制檯,我可以從這個Android應用程序獲取文件的URL來訪問它。

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

是否有這樣的方式來獲得文件的URL在Bluemix?

回答

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

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

謝謝@joe但由於我不知道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

如何使用IBM對象存儲= > 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); 
} 
}); 
相關問題