使用 akka-stream-alpakka 从 s3 下载 pdf 文件
Download pdf file from s3 using akka-stream-alpakka
我正在尝试使用 akka-stream-alpakka
连接器从 S3 下载 pdf 文件。我有 s3 路径并尝试在 alpakka s3Client 上使用包装方法下载 pdf。
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。有人可以指导我在这方面哪里出错了吗?
检查 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.")
}
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 {
}
我正在尝试使用 akka-stream-alpakka
连接器从 S3 下载 pdf 文件。我有 s3 路径并尝试在 alpakka s3Client 上使用包装方法下载 pdf。
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。有人可以指导我在这方面哪里出错了吗?
检查 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.")
}
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 {
}