Получение ошибки "Не могу прочитать входной файл" на рабочем сервере, но не локально

Я делаю 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)
   }

Все это прекрасно работает, когда я запускаю его на своем компьютере, но когда я проверяю это и проверяю на сервере Amazon, image = ImageIO.read(in) дает мне ошибку; Can't read input file!,

Для меня это не имеет смысла, так как файл либо находится в теле запроса, либо извлечен из корзины S3.

Я отлаживал этот код, и в производственной среде там есть файл, доступный после завершения "чтения".

Почему файл не может быть прочитан из производственной среды?

С уважением

1 ответ

Одним из предложений было бы не глотать исходное исключение и трассировать стеки. Используйте конструктор new Exception(message, catchedException) в ваших уловах блоков.

Другие вопросы по тегам