我正在使用HttpServer和开发HTTP服务器HttpHandler.服务器应该使用XML数据或图像响应客户端.到目前为止,我已经开发HttpHandler了使用XML数据响应客户端的实现,但是我无法实现HttpHandler从文件中读取图像并将其发送到客户端(即浏览器)的实现.图像不应该加载到内存中,所以我需要某种流式解决方案.
public class ImagesHandler implements HttpHandler {
@Override
public void handle(HttpExchange arg0) throws IOException {
File file=new File("/root/images/test.gif");
BufferedImage bufferedImage=ImageIO.read(file);
WritableRaster writableRaster=bufferedImage.getRaster();
DataBufferByte data=(DataBufferByte) writableRaster.getDataBuffer();
arg0.sendResponseHeaders(200, data.getData().length);
OutputStream outputStream=arg0.getResponseBody();
outputStream.write(data.getData());
outputStream.close();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码只向浏览器发送512字节的数据.
JB *_*zet 11
你在这里做了太多工作:解码图像,并将其存储在内存中.您不应该尝试将文件作为图像读取.那没用.浏览器的所有需求都是图像文件中的字节数.所以你应该简单地按原样发送图像文件中的字节:
File file = new File("/root/images/test.gif");
arg0.sendResponseHeaders(200, file.length());
// TODO set the Content-Type header to image/gif
OutputStream outputStream=arg0.getResponseBody();
Files.copy(file.toPath(), outputStream);
outputStream.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10628 次 |
| 最近记录: |