Scala Playframe 작업을 사용하여 S3에 파일을 업로드하려고합니다. 2.4.1
특히 모듈 play-s3를 사용하여7.0.2
텍스트 파일에서 작동하도록 할 수 있지만 이미지를 업로드하려고하면이 메시지가 표시됩니다. The provided 'x-amz-content-sha256' header does not match what was computed.
다음 코드에서 "avatar.jpeg"를 "text.txt"로 바꾸고 "image / jpeg"를 "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")
}
이에 대한 해결책은 플레이 2.4.1을 사용하지 않는 것입니다. 2.4.1에서 바이너리 데이터의 해싱에 문제가 있습니다. 2.4.2는 잘 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다