# Binärdaten im Servlet entgegen nehmen, aber wie?



## darius (3. Mai 2007)

Hallo,

ich sende von einer Handy aus Binärdaten und möchte diese dann im Servlet über den request lesen, wie mache ich das? Meine versuche  :?  sieht so aus:


```
public void doPost(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		

		InputStream is = req.getInputStream();
		FileOutputStream os = new FileOutputStream("test.png");

		int c;

		try {
			while ((c = is.read()) != -1) {
				os.write(c);
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		is.close();
		os.close();

	}
```

Wie man sieht, sende ich ein Bild, welches ich im Server wieder entgegen nehmen möchte. Leider kommt da nichts raus, hat jenad ein Tipp für mich? Ist es so korrekt wie ich es mache?

Gruß,
Dariusch


----------



## SlaterB (3. Mai 2007)

wie machst du denn das Senden, das ist ja eine Frage für sich?
schichst du einen normalen HTTP-Request mit Parameter?

und versuche erstmal ein Bit zu senden und auf dem Server auszugeben, nicht gleich eine ganze Datei und diese dort speichern..


----------



## darius (3. Mai 2007)

Hallo,

also das senden der Daten mache ich über eine http Verbindung mittels OutputStream,
hier der Code:


```
httpConn = (HttpConnection) Connector.open(url);
			httpConn.setRequestMethod(HttpConnection.POST);
			httpConn.setRequestProperty("User-Agent", "Profile/"
					+ System.getProperty("microedition.profiles")
					+ " Configuration/"
					+ System.getProperty("microedition.configuration"));
			httpConn.setRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			httpConn.setRequestProperty("Content-Length", Integer
					.toString(this.fileLoader.getBuffer().length));
			httpConn.setRequestProperty("Content-Language", "de-DE");

			output = httpConn.openOutputStream();
			output.write(this.fileLoader.getOutput().toByteArray());
```

Die Frage ist halt, wie ich es aus dem Request bekomme?

Gruß,
Dariusch


----------



## SlaterB (3. Mai 2007)

tja, soll also ein Post sein, 
vielleicht programmierst du dir eine ganz einfache HTML-Seite mit Datei-Upload,
würde einen fehlerhaften Request ausschließen oder zumindest die Wahrscheinlichkeit auf wenigstens einen richtigen erhöhen 

so wie du das vorhast scheint es tatsächlich möglich, habe ich jedenfalls auch woanders gefunden
http://forum.java.sun.com/thread.jspa?threadID=637749&tstart=30

ich kannte das bisher nur mit speziellen Libraries, z.B. 
http://www.oop-reserch.com/cross_servlet.html

das ist aber nicht das, was ich kenne (und nicht mehr erinnere),
also vielleicht wenig hilfreich..

wenn sich sonst keiner meldet evtl alleine bei google weitersuchen,
Stichwörter upload (image, file), multipart, servlet


----------



## darius (3. Mai 2007)

Hallo,

das Problem habe ich gelöst, ich konnte nichts speichern, weil die permission nicht gestzt wurde  :applaus:  Tja, daruf muss man ersteinmal kommen. Das komische ist nur, das ich in der doPost keine Fehlermeldung erreichen konnte, diese aber in der doGet.

Gruß,
Dariusch

P.s. Wie unten beschrieben, werden bytes gesendet und wieder gespeichert. (es funktioniert mit png, jpg und 3gp files)


----------



## SlaterB (3. Mai 2007)

deshalb: nur ein Bit senden und dies im Servler direkt ausgeben,
im Log oder in einer HTML-Seite oder so,

damit kann man die einige der Fehler, wie diesen der Speicherung, umgehen


----------

