0

我使用请求正文中包含的文件对请求进行 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 存储桶中获取的。

我已经调试了这段代码,并且在生产环境中,当“读取”完成时,那里有一个可用的文件。

为什么不能从生产环境中读取文件?

问候

4

1 回答 1

0

一个建议是不要吞下原始异常和堆栈跟踪new Exception(message, catchedException)在你的 catch 块中使用构造函数。

于 2013-10-03T13:51:34.623 回答