2016-09-14 206 views
0

我试图使用Scala的Playframe工作2.4.1具体使用模块发挥-S3 7.0.2S3文件上传失败的图像,但适用于文本文件

的文件上传到S3,我可以得到它的工作对于文本文件,但当我尝试上传图片时,我收到此消息,The provided 'x-amz-content-sha256' header does not match what was computed.

如果我在以下内容中将“text.txt”和“image/jpeg”替换为“纯文本/文本”的“avatar.jpeg”代码工作。文本文件上传到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") 
} 

回答