S3使用Play-S3上传文件对图像失败,但适用于文本文件

时间:2016-09-14 02:15:40

标签: scala amazon-s3 playframework playframework-2.4

我正在尝试使用Scala Playframe工作2.4.1将文件上传到S3。具体使用模块play-s3 7.0.2

我可以将其用于文本文件但是当我尝试上传图片时,我收到此消息,The provided 'x-amz-content-sha256' header does not match what was computed.

如果我换掉" avatar.jpeg" for" text.txt"和" image / jpeg" for" plain / text"在以下代码中它起作用。文本文件上传到S3。但是,如果我尝试上传图片(我已经尝试过jpeg和png),它就说标题不匹配。我不知道我在这一点上做错了什么,这让我疯了。

import fly.play.s3.{BucketFile, S3, S3Exception}
import java.nio.file.{Files, Paths}

def test() = Action
{ implicit request =>

    val file_path = "/path/to/file/avatar.jpeg"
    val bucket = S3("path_to_bucket")
    val byte_array = Files.readAllBytes(Paths.get(file_path))

    val result = bucket + BucketFile("avatar.jpeg", "image/jpeg", byte_array)
    result.map { unit =>
        Logger.info("Saved the file")
    }
        .recover {
            case S3Exception(status, code, message, originalXml) =>
            {
                Logger.info("Error: " + message)
                Logger.info("originalXml: " + originalXml)
            }
        }

    Ok("Yay")
}

1 个答案:

答案 0 :(得分:0)

解决方案是不使用play 2.4.1。使用2.4.1对二进制数据进行散列有问题。 2.4.2工作得很好。

https://github.com/Kaliber/play-s3/issues/70