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(..)' 来读取文件内容。
根据这个 [ 答案(未被接受)我尝试从 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(..)' 来读取文件内容。