HTTP状态500 - 无法读取输入文件

时间:2017-04-07 00:06:45

标签: java tomcat servlets war javax.imageio

我创建了一个基于JavaEE的Web应用程序,然后将其导出为WAR文件并部署到在vm上运行的tomcat服务器。

应用程序允许用户将图像上传到虚拟磁盘上的某个位置,然后运行一个图像处理类,该类接受以前上传文件的路径。

我正在尝试使用ImageIO.read()将文件作为缓冲图像读入。

在IDE中运行时,图像处理类工作正常,能够接受存储在磁盘上的图像并输出处理过的图像。但是,当它作为已部署的Web应用程序访问时,我遇到了错误:

HTTP Status 500 - Can't read input file!

type Exception report
message Can't read input file!
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.imageio.IIOException: Can't read input file!
    javax.imageio.ImageIO.read(Unknown Source)
    upload.servlet.resizeImageAndSaveSobel2.sobelFilter(resizeImageAndSaveSobel2.java:22)
    upload.servlet.resizeImageAndSaveSobel2.processImage(resizeImageAndSaveSobel2.java:14)
    upload.servlet.RunTongue.doPost(RunTongue.java:24)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
note The full stack trace of the root cause is available in the Apache Tomcat/9.0.0.M13 logs.

这是代码,它是读取上传图像的图像处理类的一部分:

public void sobelFilter(String input, String output) throws IOException {
  File inputFile = new File(input);
  BufferedImage img = ImageIO.read(inputFile);
  ImageReader ir = new ImageReader();
  BufferedImage sobelImg = ir.greyscale(img);
  File outputFile = new File(output);
  ImageIO.write(sobelImg, "jpg", outputFile);

 }

输入文件字符串如下:C:/ Users / SRCMIPS / Desktop / M2 / Image Upload / PatientImage.jpeg

对于带有项目部署WAR的ImageIO.read,这是一个问题吗? 应用程序无法从位于虚拟机上的路径读取图像吗?

对于解决这个问题的任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

VM是您系统的外部。您需要在项目中基本创建一个图像文件夹并将其读取(/ project name / lib name / image name)。

另请参阅此stackoverflow问题,讨论此问题: imageio.IIOException: Can't read input file