Skip to content
Snippets Groups Projects
ImageRes.java 1.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • package code;
    
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.URI;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.imageio.ImageIO;
    
    import com.sun.net.httpserver.HttpExchange;
    import com.sun.net.httpserver.HttpHandler;
    
    public class ImageRes implements HttpHandler {
    
    	@Override
    	public void handle(HttpExchange exchange) throws IOException {
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    		String requestURI = exchange.getRequestURI().toASCIIString().replace("/secured/home/", "/");
    
    
    		String requestMethod = exchange.getRequestMethod();
    		if (Helper.compareText(requestMethod, "GET")) {
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    			BufferedImage image = getLocalImage(requestURI);
    
    			if (image == null)
    				Helper.pageNotFound(exchange);
    			List<String> strlist = new ArrayList<>();
    			strlist.add("image/png");
    			OutputStream os = exchange.getResponseBody();
    			ByteArrayOutputStream baos = new ByteArrayOutputStream();
    			ImageIO.write(image, "png", baos);
    			baos.flush();
    			byte[] imageInByte = baos.toByteArray();
                exchange.getResponseHeaders().put("content-type", strlist);
                exchange.sendResponseHeaders(200, imageInByte.length);
    			os.write(imageInByte);
    			os.close();
    		} else {
    			Helper.methodNotAllowed(exchange);
    		}
    	}
    
    	private BufferedImage getLocalImage(String uri) {
    		String page = Server.CLIENT_PATH + uri;
    		try {
    			File f = new File(page);
    			BufferedImage image = ImageIO.read(f);
    			return image;
    		} catch (IOException e) {
    			System.out.println("Error reading file '" + page + "'");
    			return null;
    		}
    	}
    
    }