Получение ошибки "Не могу прочитать входной файл" на рабочем сервере, но не локально
Я делаю 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)
в ваших уловах блоков.