我使用请求正文中包含的文件对请求进行 POST。
在我的方法中,我检索了这个文件
if(request.body.file("imageFile").getOrElse(null) != null) {
request.body.file("imageFile").map{ case FilePart(key, name, contentType, content) =>
try{
val in:InputStream = new BufferedInputStream(new ByteArrayInputStream(content))
image = ImageIO.read(in)
} catch {
case e => Logger.debug(e.printStackTrace.toString); throw new Exception(e.getMessage)
}
}
}
如果文件包含在请求正文中,它会尝试获取它,否则它只会尝试从 S3 获取文件。
else {
try{
val in:InputStream = new BufferedInputStream(new ByteArrayInputStream(S3Storage.retrieveS3File("facebook.jpg").content))
image = ImageIO.read(in)
} catch {
case e:IOException => Logger.debug("Failed to retrieve facebook image"); throw new IOException(e.getMessage)
}
当我在我的计算机上运行它时,这一切都很好,但是当我签入它并在亚马逊服务器上对其进行测试时,它image = ImageIO.read(in)
给了我一个错误;Can't read input file!
.
对我来说,这没有任何意义,因为该文件要么在请求正文中,要么是从 S3 存储桶中获取的。
我已经调试了这段代码,并且在生产环境中,当“读取”完成时,那里有一个可用的文件。
为什么不能从生产环境中读取文件?
问候