2013-03-02 4 views
3

Google Cloud Storage에 파일을 동기화하는 백엔드 애플리케이션을 보유하고 있으며 저장소의 모든 파일을 백엔드에서 요청하지 않고 자바 스크립트로 저장하려고합니다. 나는 CORS를 설정했으며 모든 파일의 ACL은 공개 읽기입니다. API에 인증에 대한 단락이 있습니다.Google Cloud Storage의 자바 스크립트에서 승인없이 버킷에 파일 나열

Google Cloud Storage API로 수행하는 대부분의 작업은 인증되어야합니다. 유일한 예외는 익명 액세스를 허용하는 개체 에 대한 작업입니다. AllUsers 그룹에 읽기 권한이 있으면 개체에 익명으로 액세스 할 수 있습니다. AllUsers 그룹에는 인터넷상의 모든 사람 이 포함됩니다.

어떻게 모든 사용자에 대한 권한을 설정할 수 있습니까? 그것은 단지 대중에게 공개하는 acl 설정인가요?

버킷 목록 API 호출이 인증을 필요로하는 작업에 해당합니까? 아니면이 작업을 수행 할 수 있습니까? 여기

나는 달성하기 위해 노력하고 무엇 :
$.ajax({ 
    url: "http://storage.googleapis.com/" + BUCKET_NAME, 
    method: "GET", 
    headers: { 
     "x-goog-project-id": PROJECT_ID 
    } 
}); 

어떤 도움

주시면 감사하겠습니다.

답변

2

JSON API을 사용하면 JavaScript에서 버킷의 내용을 가져올 수 있습니다.

GitHub의 s torage-metabucket-javascript 프로젝트가이를 수행하는 방법의 예입니다. bucket listing code is here. 작업 솔루션은 live demo을 참조하십시오.

대신 google-api-javascript-client library을 사용할 수 있습니다. GitHub의 storage-getting-started-javascript repository에는이를 사용하는 방법의 예가 나와 있습니다.

1

승인없이 버킷을 나열하려면 버킷에 public-read acl (모든 객체 대신)을 사용해야합니다. 그러나 월말에 놀라운 청구서를 볼 수 있으므로주의해서 공개 읽기 버킷을 사용해야합니다.

0

버킷에 개체를 표시하려면 버킷을 익명으로 읽을 수 있도록 만들어야합니다. 개발자 콘솔 저장소 -> 브라우저로 이동하십시오. 편집 권한에서 선택/쓰기 사용자 - 모든 사용자 -을 읽습니다. 버킷 내부의 파일에는 ACL이있을 수 있습니다.

당신은 다음과 같은 파일을 나열 할 수 있습니다 후 : https://cloud.google.com/storage/docs/json_api/v1/objects/list

구체적인 예 :

Storage.bucket = 'mybucket'; 

Storage.listObjectsItems = function(prefix, delimiter, callback) { 
    var request = gapi.client.storage.objects.list({ 
    'bucket' : Storage.bucket, 
    'prefix' : prefix, 
    'delimiter' : delimiter 
    }); 
    request.execute(function(resp) { 
    console.log(resp); 
    callback(resp.items); 
    }); 
}; 

Storage.listObjectsPrefixes = function(prefix, delimiter, callback) { 
var request = gapi.client.storage.objects.list({ 
    'bucket' : Storage.bucket, 
    'prefix' : prefix, 
    'delimiter' : delimiter 
}); 
request.execute(function(resp) { 
    console.log(resp); 
    callback(resp.prefixes); 
}); 
}; 

현재 접두어 및 구분 기호에 대한 자세한 읽을 수 하자 우리는 console에서 다음 버킷 구조를 가지고 말을> 저장을 -> 브라우저 :

mybucket/folder1/folder11/.. 
       folder12/.. 
       folder13/.. 
        ... 
       folder1n/.. 

전화

Storage.listObjectsPrefixes('folder1/', '/',callback); 

(콜백 인수로) folder1 안에있는 모든 폴더를 반환합니다.

버킷을 익명으로 읽을 수 있도록 금융 위험이 있습니다 (아마도 잘못 되었나요?).제한된 도메인에서만 액세스 할 수 있어야하며 누군가 내 양동이의 콘텐츠를 탐색하는 이유가 무엇이든, 심지어 그러한 양동이가 존재한다는 것을 발견했습니다.

관련 문제