2013-06-27 3 views
3

Я получаю разочарование, не найдя никаких хороших объяснений о том, как перечислять все файлы в ведре S3.Список файлов на S3

У меня есть это ведро с 20 картинами. Все, что я хочу сделать, это перечислить их. Кто-то говорит: «Просто используйте метод S3.list». Но без какой-либо специальной библиотеки нет S3.list-метода. У меня есть метод S3.get, который я не получаю работать. Арг, был бы признателен, если бы кто-то сказал мне, как просто получить список всех файлов (имен файлов) из ведра S3.

val S3files = S3.get(bucketName: String, path: Option[String], prefix: Option[String], delimiter: Option[String]) 

возвращает будущее [Response]

Я не знаю, как использовать этот S3.get. Что было бы самым простым способом перечислить все файлы в моем ведре S3?

Ответы очень ценятся!

ответ

5

Использование библиотеки здесь:

https://github.com/Rhinofly/play-s3

Вы должны быть в состоянии сделать что-то вроде этого:

import concurrent.ExecutionContext.Implicits._ 

val bucket = S3("bucketName") 
val result = bucket.list 
result.map { 
    case Left(error) => throw new Exception("Error: " + x) 
    case Right(list) => 
    list.foreach { 
     case BucketItem(name, isVirtual) => //... 
    } 
} 

Вы должны настроить это немного относительно учетных данных, но примеры показывают, как это сделать.

+0

Спасибо большое, помог мне! Я немного изменил его, я опубликую свое решение. – raxelsson

2
def listS3Files() = Action { 
Await.result(S3("bucketName").list, 15 seconds).fold(
{ error => { 
    Logger.error("Error") 
    Status(INTERNAL_SERVER_ERROR) 
}}, 
    success => { 
    Ok(success.seq.toString()) 
    } 
) 
} 

Вот мое рабочее решение. Благодаря @cmbaxter