Probleme mit Bildern

PUM1212

Grünschnabel
Hallo,

Ich habe ein Problem und versuche diese seit einer woche erfolglos zu lösen. Und zwar lade ich mit Servlets Bilder zum Server was auch tadellos funktioniert. Diese sollen dann dargestellt werden dazu verwend ich Servlets. Mein Problem ist wenn ich das Bild schreibe verschwindet alles was in HTML geschrieben wurde. Also schau ich entweder ne Seite mit dem Bild an und sonst nix oder ne Seite mit einer Tabelle wo kein Bild dargestellt ist.

Kann mir bitte Jemand helfen?

LG

Peter
 
Hi,

da deiner Beschreibung zufolge Java-Klassen im Spiel, und scheinbar für das Problem verantwortlich sind, schiebe ich den Thread auf Verdacht vom HTML- ins J2EE-Forum, und bitte dich im Namen der dortigen Hilfeleistenden, den Quellcode zu posten, damit sie einen Blick drauf werfen können.
 
Vielen dank für die Weiterleitung!

Also hier kommt der Code:
Das Servlet
Code:
public class LoadFile extends HttpServlet {

	/*
	 * Post Method to get the Post request
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		// response in the JSP should be an image...
		response.setContentType("image/jpg");

		// This class knows the Mime Type File so it knows if the request is a
		// file
		if (ServletFileUpload.isMultipartContent(request)) {
			// Create a factory for disk-based file items
			FileItemFactory factory = new DiskFileItemFactory();
	
			// Create a new file upload handler
			ServletFileUpload upload = new ServletFileUpload(factory);

			// Parse the request
			try {
				List /* FileItem */items = upload.parseRequest(request);
				
				OurImage ima=OurImage.getInstance();
				ima.setList(items,getServletContext().getRealPath("/"));
				request.setAttribute("styles", items);
				RequestDispatcher view;
				FileItem item=ima.getFile();

				if(ima.checkIfImage(item)){
					ima.createImage(item);
					view=request.getRequestDispatcher("JSP/result.jsp");
				}else{
					view = request.getRequestDispatcher("JSP/FileUploadErrorPage.jsp");
				}	
				 
				view.forward(request, response);

			} catch (FileUploadException e) {

			}

		}

	}

}

Klasse die ein Image erzeugt bzw ein byte[] zurückgibt
Code:
package de.weihenstephan.preprocessing;

import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

import org.apache.commons.fileupload.FileItem;

public class OurImage {
	private List items;
	private static String name;
	private String path;
	private int width;
	private int height;
	private static OurImage instance;
	private static ImageIcon sourceImage;
	private static Image image;
	private static byte[] data;

	private OurImage() {

	}

	public static synchronized OurImage getInstance() {
		if (OurImage.instance == null) {
			OurImage.instance = new OurImage();
		}
		return OurImage.instance;
	}

	public void setList(List items, String path) {
		this.items = items;
		this.path = path;
	}

	public FileItem getFile() {
		FileItem item = null;
		Iterator it = items.iterator();
		while (it.hasNext()) {
			item = (FileItem) it.next();
			setByteArray(item.get());
			createImage(item);
				
			
		}
		return item;
	}
	public void createImage(FileItem item) {
		File fullFile = new File(item.getName());
		File savedFile = new File(path, fullFile.getName());
		
		setName(fullFile.getName());
		try {
			item.write(savedFile);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // out.print(savedFile);
		try {
			setImage(ImageIO.read(savedFile));
			// Image rotatedImage = Process.runStep1(image);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	};

	public boolean checkIfImage(FileItem item) {
		if ((item.getContentType()).contains("image")) {
			return true;
		}
		return false;

	};

	public static Image getImage() {
		return image;
	}

	public void setImage(Image image) {
		this.image = image;
	}

	public static  byte[] getByteArray() {
		return data;
	};

	public void setByteArray(byte[] data) {
		this.data = data;
	};
	public void setName(String name) {
		this.name = name;
	}

	public static String getName() {
		return name;
	}
	public void setResponse(){
		
	};

die JSP:

Code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" import="java.util.*" import="org.apache.commons.fileupload.*" import= "de.weihenstephan.preprocessing.*" import="java.io.File" import= "java.io.OutputStream" import="java.awt.image.BufferedImage" import="javax.imageio.stream.MemoryCacheImageInputStream" import="javax.imageio.ImageIO" import="java.io.ByteArrayOutputStream"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="ij.io.ImageWriter"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hallo</title>
</head>
<body>
<h1 align="Center">Geladenes Bild</h1>


<%
response.getOutputStream().write(OurImage.getByteArray());

%>



</body>
</html>

Also das Bild wird angezeigt leider die Überschrift geladenes Bild nicht!
Kann mir jemand helfen? Es soll auf jeden Fall das Bild dargestellt werden ohne es zu speichern.

LG Peter
 

Neue Beiträge

Zurück