FileUpload ohne Servlets

ASD20054

Mitglied
hi,

hat jemand einen Codeschnipsel da wie ich ein Bild mittels multipart/form-data und Get hochladen kann? Das heißt ich habe ein Formular Upload.html was mittels eines Java Server betrieben wird. Nur muss ich halt den Upload Code in die *.java datei schreiben damit er das Bild hochlädt. Kann mir wer weiterhelfen?

Code:
	private void upload() 
	{
                //hier müsste dann der Code stehen.
	}

Bitte keine Servlet Beispiele!
 
Du kannst nicht einfach eine Java Klasse ohne Servlet oder sonstwas aufrufen.
Warum willst du kein Servlet benutzen? Da heißt die methode dann nicht upload sondern einfach doPost. Du musst entweder ein JSP oder ein Servlet benutzen.
Und in beiden fällen sollte dir Commons FileUpload hilfreich sein:
http://jakarta.apache.org/commons/fileupload/
 
Hallole
Ich glaube damit jemand Dir eine gute Antwort geben kann, solltest Du vielleicht noch etwas mehr spezifizieren.
Wenn ich mal so mutmaße möchtest Du einem schon existierenden Server etwas hochladen, richtig? Wie sieht es mit dem Protokoll aus, ist es HTTP oder ist es FTP ?
Wenn es HTTP ist nehme ich an, dass Du mit dem Schlagwort HTTP-Client weiter kommen könntest. und falls es FTP sein sollte vielleicht mit dem Schlagwort FTP-Client.

Ist aber nur eine Annahme.

Takidoso
 
xardias hat gesagt.:
Du kannst nicht einfach eine Java Klasse ohne Servlet oder sonstwas aufrufen.

Also alles was eine Java-Klasse benötigt um aufgerufen zu werden ist eine main-routine und dann natrülich etwas was die JVM startet und die besagte Klasse 'übergibt' zum Beispiel eine Batch-Datei. Oder bezieht Deine "sonstwas" sich auf diese Möglichkeit?
:)
 
Sorry, ich Depp habe die Frage etwas falsch verstanden. Ich dachte er wolle den serverseitigen Part des uploads ohne Servlets realisieren.
Entschuldigt bitte ;)

Aber um Thema: Ich denke dir sollte Commons HttpClient weiterhelfen: http://jakarta.apache.org/commons/httpclient/
Damit kannst du jeder beliebigen Java Anwendung mit Zugang zum Internet HTTP anfragen senden und antworten empfangen.
Speziell diese Beispielanwendung könnte dich Interessieren:
 
Zuletzt bearbeitet:
Hellas!

Also ich bin so ungeniert und schreib mein Problem jetzt hier an diesem Thread dazu. Ich will nämlich ungefähr das Selbe lösen, also ein Programm/Applet welches Datei(en) an den Server schieckt, mittelst Post. Ich bin auch schon sehr weit nur meine POST Daten werden im PHP Skript (phpinfo()) einfach nicht angezeigt. Es folgt die komplette POST-Anfrage wie sie vom ECHO-Server zurückgegeben wird:

Code:
POST /phpinfo.php HTTP/1.1\r\n
Content-Type: multipart/form-data; boundary=-----------1234\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
User-Agent: Java/1.5.0\r\n
Host: localhost:80
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n
Connection: keep-alive\r\n
Content-Length: 92\r\n
\r\n
-----------1234\r\n
Content-Disposition: form-data; name="test1"\r\n
\r\n
Text\r\n
-----------1234--\r\n
\r\n

Java:
				String boundary = "-----------1234";

				URL url = new URL("http://localhost:7/phpinfo.php");
				HttpURLConnection conn = (HttpURLConnection)url.openConnection();
				conn.setRequestMethod("POST");
				conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
				conn.setDoOutput(true);
				conn.setUseCaches(false);

				ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512);

				String content = boundary + "\r\n"
								 + "Content-Disposition: form-data; name=\"test1\"\r\n"
								 + "\r\n"
								 + "Test\r\n"
								 + boundary + "--\r\n\r\n";

				byte[] bytes = content.getBytes();

				byteStream.write(bytes, 0, bytes.length);
				byteStream.writeTo(conn.getOutputStream());

Ich hoffe ihr könnt mir Anhaltspunkte geben....

lg Billie
 
Zuletzt bearbeitet von einem Moderator:
Also ich werde mir evtl. mal den Source Code ansehen, aber eigentlich das Problem selbst lösen und wissen, warum das so einfach nicht funktioniert. Einfache POST-Anfragen funktionieren, aber was er mir an den Multipart POST Anfragen nicht mag?!
 
Hab den "Fehler" gefunden. Ich bin auf ungereimtheiten zwischen der Content-Length Angabe von meinem Java Programm und der Angabe von IE gestoßen. Der IE hatte immer um einige Zeichen mehr und die fehlenden Zeichen hab ich gefunden...

Ich habe ein Boundary definiert "--1234", im der Content-Type Angabe passt dieses Boundary so. Im Content-Teil muss das Boundary nochmal um zwei "--" erweitert werden, also "----1234".

lg Billie
 
Hallo,
Sorry für meine wenigen Angaben. Ich kann auf dem Server was ich benutz leider keine Servlets verwenden. Da es ein HTTP Stream Chat Server ist (frettjc) und der keine Servlets unterstützt. Ich habe schon versucht das mit den jakarta commons zu machen doch leider weiss ich nicht wie ich das anstellen soll. Ich möchte das die User ein Bild Uploaden können. Wer sich gern mal den Source Code anschauen möchte , denn kann ich gerne den Chat schicken. Versuch das schon seit einem halben Jahr hinzubekommen doch es wird nichts da mir keiner in den Foren Helfen möchte:(
 
Zurück