2016-06-26 5 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

Bluemix에서 파일의 URL을 얻을 수있는 그러한 방법이 있나요 ?

답변

0

응용 프로그램을 어떻게 구성했는지에 따라 문제에 대한 여러 가지 잠재적 인 해결책이 있습니다.

현재 Object Storage Android 클라이언트 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); 
} 
});