我已經創建了一個基於JavaEE的Web應用程序,然後我將其作爲WAR文件導出並部署到在VM上運行的tomcat服務器。HTTP狀態500 - 無法讀取輸入文件
該應用程序允許用戶將映像上傳到vm磁盤上的某個位置,然後運行一個圖像處理類,該類接受先前上傳的文件的路徑。
我正在嘗試使用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
這是一個關於ImageIO.read的問題,帶有項目的部署WAR? 應用程序是否無法從位於vm上的路徑讀取圖像?
任何有關這個問題的解決方案的指導將不勝感激。
把一個破發點中的'sobelFilter'方法和檢查'input'。這很可能是錯誤的。 – VHS
您必須配置Tomcat以提供外部靜態數據。請參考這個。 [鏈接](http://www.moreofless.co.uk/static-content-web-pages-images-tomcat-outside-war/) –
@PGH也希望這個幫助[鏈接](http:// stackoverflow。 com/questions/1812244/simplest-way-to-serve-static-data-from-application-server-in-a-java) –