Openshift:如何显示来自 DATA_DIR 的图像?

Openshift: how to show image from DATA_DIR?

根据这个 [ 答案(未被接受)我尝试从 OpenShift DATA_DIR 读取图像文件,但在浏览器中收到消息:

Image «http://app-name.rhcloud.com/GetImageServlet?img=681265.jpg» can not be shown since contains errors."

@WebServlet("/GetImageServlet")
public class GetImageServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String fileName = request.getParameter("img");
        String uploadFilePath = ...;
        System.out.println(uploadFilePath);

        byte[] imageBytes = getImageAsBytes(uploadFilePath);
        response.setContentType("image/jpeg");
        response.setContentLength(imageBytes.length);
        response.getOutputStream().write(imageBytes);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    public byte[] getImageAsBytes (String ImageName) throws IOException {
         // open image
         File imgPath = new File(ImageName);
         BufferedImage bufferedImage = ImageIO.read(imgPath);

         // get DataBufferBytes from Raster
         WritableRaster raster = bufferedImage .getRaster();
         DataBufferByte data   = (DataBufferByte) raster.getDataBuffer();

         return ( data.getData() );
    }

    private static final long serialVersionUID = 1L;
}

我们真的可以从 OpenShift 获取数据吗DATA_DIR?

您犯的唯一错误是发送了 RAW 图像数据(由 ImageIO 读取)。使用标准 FileInputStream 更改 getImageAsBytes() 方法以直接从文件读取图像数据(例如,jpeg 文件包含以 jpeg 格式编码的图像)。或者,您可以使用 'Files.readAllBytes(..)' 来读取文件内容。