2016-10-19 2 views
1

Google Cloud Storage에 내 모든 애플리케이션 정보를 저장합니다. 나는 양동이를 만들었고이 양동이 안에는 폴더가 있습니다. 이 코드를 사용하면 모든 폴더 목록을 얻을 수 있습니다.C# Google 클라우드 저장소 폴더의 ListObject 가져 오기

public static IList<uFolder> ListFolders(string bucketName) 
{ 
    if (storageService == null) 
    { 
      CreateAuthorizedClient(); 
    } 

    Objects objects = storageService.Objects.List(bucketName).Execute(); 
    if (objects.Items != null) 
    { 
      return objects.Items. 
       Where(x => x.ContentType == "application/x-www-form-urlencoded;charset=UTF-8"). 
       Select(x => new uFolder(x.Name)).ToList(); 
     } 
     return null; 
} 

실제로이 코드는 내 버킷에있는 모든 파일과 폴더를 가져옵니다. 그래서 나는 그것들을 추출해야합니다. 내 첫 번째 질문은이 방법에 대한 지름길이 있습니까?

내 가장 중요한 질문은 특정 폴더에 모든 파일을 어떻게 가져올 수 있습니까? 예를 들어; 내 버킷 이름이 MyBucket이고 "MyBucket/2 /"에서 모든 파일을 가져오고 싶습니다. 어떻게해야합니까? 이것이 파일의 중간 링크 또는 자체 링크를 확인하는 유일한 방법입니까?

모든 답변 주셔서 감사합니다. 좋은 하루 되십시오. 좋은 작품 ...

답변

1

Google Cloud Storage에서 최상위 폴더를 가져 오려면 누구나 사용할 수 있습니다.

ObjectsResource.ListRequest request = storageService.Objects.List(CurrentBucket); 
request.Delimiter = "/"; 
Google.Apis.Storage.v1.Data.Objects response = request.Execute(); 
if (response.Prefixes != null) 
{ 
    return response.Prefixes.ToList(); 
} 

특정 폴더 내에 폴더를 가져 오려는 경우;

ObjectsResource.ListRequest request = storageService.Objects.List(CurrentBucket); 
request.Delimiter = "/"; 
request.Prefix = delimiter; //delimiter is any sub-folder name. E.g : "2010/" 
Google.Apis.Storage.v1.Data.Objects response = request.Execute(); 
if (response.Prefixes != null) 
{ 
    return response.Prefixes.ToList(); 
} 

주의 : 내가 도달 폴더 접두사를 반환하고 있습니다.

0

목록 요청의 Delimiter 속성을 /으로 설정하는 것이 좋습니다. 이렇게하면 계층 구조의 최상위 수준에서 구분 된 결과가 반환됩니다.

+0

C#으로 예제를 보여줄 수 있습니까? 나는 인터넷에서 어떤 예를 찾을 수 없다. –

+0

나는 그것을 할 수있다. 답변 주셔서 감사합니다. 좋은 하루 되세요 :) –

+0

Mr jterrace, 최상위 디렉토리에있는 모든 폴더 및 파일 목록을 볼 수 있습니까? –

관련 문제