Загрузите файл pdf из s3, используя akka-stream-alpakka - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь загрузить PDF-файл с S3, используя разъем akka-stream-alpakka. У меня есть путь s3, и я пытаюсь скачать pdf с помощью метода-обертки над alpakka s3Client.

def getSource(s3Path: String): Source[ByteString, NotUsed] = {
    val (source, _) = s3Client.download(s3Bucket, s3Path)
    source
  }

Из моего основного кода я вызываю вышеуказанный метод и пытаюсь преобразовать его в файл

               val file = new File("certificate.pdf")
               val res: Future[IOResult] = getSource(data.s3PdfPath)
                                            .runWith(FileIO.toFile(file))

Однако вместо того, чтобы конвертировать его в файл, я застрял с типом IOResult. Может кто-нибудь подсказать, пожалуйста, где я ошибаюсь?

Ответы [ 2 ]

3 голосов
/ 03 февраля 2020
  def download(bucket: String, bucketKey: String, filePath: String) = {
    val (s3Source: Source[ByteString, _], _) = s3Client.download(bucket, bucketKey)
    val result = s3Source.toMat(FileIO.toPath(Paths.get(filePath)))(Keep.right)
      .run()

    result
  }


download(s3Bucket, key, newSigFilepath).onComplete {

}
2 голосов
/ 03 февраля 2020

Проверьте IOResult, и в случае успеха вы можете использовать свой файл:

res.foreach { 
  case IOResult(bytes, Success(_)) => 
    println(s"$bytes bytes written to $file")

    ... // do whatever you want with your file

  case _ =>
    println("some error occurred.")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...