Image upload auf ImageShack,TinyPic usw.

Jigga

Bekanntes Mitglied
Guten Abend alle zusammen,

ich hab mir letztes Gedanken über ein kleines Programm gemacht,das folgendes können sollte:
Upload eines bildes auf einem beliebigen(vorher definierten) ImageHoster(vorzugsweise ImageShack und TinyPic)
Ausserdem will ich mich in einem Forum anmelden können und mit dem Programm einen Post erstellen in dem unteranderem der link zum vorher hochgeladenem bild enthalten ist.

Soweit so gut,erste Frage wäre vorerst: Ist mein vorhaben überhaupt möglich?
Ich habe eine ganze weile nach "datei upload mit java" gegooglet und wurde leider nur bedingt fündig.
Mir ist mitlerweile bewusst,dass "httpclient" für dieses vorhaben wohl eine grundlage sein wird und da komme ich auch schon zur zweiten Frage.
Ich habe den Httpclient runtergeladen und über "properties => java build paath => libraries => add library" die mitgelieferten JARs in mein projekt eingebunden.Jedoch kriege ich schon beim erstellen eines Clients: [Java]HttpClient client = new HttpClient();[/code]
einen Fehler beim "HttpClient()" der wie folgt lautet: "Cannot instantiate the type HttpClient"

Habe ich beim einbinden etwas falsch gemacht oder woran könnte das liegen.Achja an dieser stelle sollte ich wohl noch erwähnen,dass ich mit Eclipse 3.5.2 arbeite.

Ich wäre für hilfe und vielleicht sogar über kleine code schnipsel an denen man sich ungefähr orientieren könnte sehr dankbar.

mfg Jigga
 

eRaaaa

Top Contributor
Probiere mal [c]new DefaultHttpClient()[/c] glaube da hat sich was in der 4er Version verändert (ich finde leider nur die alte API Doc so spontan ;( )
 

Jigga

Bekanntes Mitglied
Probiere mal [c]new DefaultHttpClient()[/c] glaube da hat sich was in der 4er Version verändert (ich finde leider nur die alte API Doc so spontan ;( )


ein problem weniger.das hat schon mal funktioniert,danke.ich dachte schon ich hätte etwas beim einbinden falsch gemacht...
und ja da hat sich wohl einiges geändert,weil ich zB die "PostMethode" auch als falsch angestrichen bekomme ???:L
 

Jigga

Bekanntes Mitglied

kay73

Bekanntes Mitglied
hat jemand noch eine idee bezüglich des image upload?

Hier ist ein Prototyp für imageshack.us:

Du brauchst den Apache Commons HTTP Client/Core
http://apache.mirror.iphh.net//http...nts-client-4.0.3-bin-with-dependencies.tar.gz

und für den HTML Code die Apache Commons Lang; alternativ kommentiere Zeile 85 aus und fixe die Imports.
http://apache.mirror.clusters.cc//commons/lang/binaries/commons-lang-2.5-bin.tar.gz

Beachte:
  • Für Bilder kleiner ca. 165x165 generiert imageshack nicht notwendigerweise Thumbnails, daher sind die zurückgegebenen Properties für "*-Miniatur" nicht notwendigerweise gefüllt.
  • Ich habe nur
    Code:
    Pattern
    -s für einen Forencode und einen HTML-Code geschrieben. Für die übrigen Codes kannst Du in
    Code:
    "onClick=\"pageTracker\\._trackEvent\\('new-done-click','thumb-forum-click'\\);\".+(\\[URL=\\S+\\[/URL\\])"
    das
    Code:
    thumb-forum-click
    z. B. gegen
    Code:
    alt-forum-click
    ersetzen. Schau Dir den Quelltext der Imageshack-Hochladenfertig-Seite an.
  • Ich kenne mich nicht so toll mit dem Apache HttpClient aus und erzeuge insgesamt zwei Instanzen. Das kann mit dem ConnectionManager des Client bestimmt eleganter machen.
  • Ich weiss nicht, ob die MultiPartEntity-Klasse so schlau ist, die Content-Length für den POST aus der Länge der Datei zu berechnen. Schlimmstenfalls landet die Bilddatei im Speicher, was bei vielen großen Bildern vielleicht Probleme gibt.
  • Sobald imageshack seine Webseite ändert, klappt das alles nicht mehr.
  • Vielleicht macht es Sinn, einen gefaketen User-Agent anzugeben und den Upload als einen von Firefox zu tarnen.
Java:
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class ImageShackUploadDemo {
	
	private static final Pattern fullPic 
		= Pattern.compile("<label><a href=\"(\\S+)\"\\s+onClick=\"pageTracker\\._trackEvent\\('new-done-click','link-directlink-click'\\);\">",
			Pattern.MULTILINE );
	
	private static final Pattern forumThumbPattern 
		= Pattern.compile("onClick=\"pageTracker\\._trackEvent\\('new-done-click','thumb-forum-click'\\);\".+(\\[URL=\\S+\\[/URL\\])", 
			Pattern.MULTILINE );

	private static final Pattern htmlThumbPattern 
		= Pattern.compile("onClick=\"pageTracker\\._trackEvent\\('new-done-click','thumb-html-click'\\);\".+(&lt;a.+/a&gt;)", 
			Pattern.MULTILINE );

	public Properties uploadToImageShack(final File file, final String mimeType) {

		try {
			int statusCode;
			HttpResponse response;
			Matcher matcher;
			final Properties result = new Properties();
			
			final MultipartEntity mpe = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
			mpe.addPart("uploadtype", new StringBody("on"));
			mpe.addPart("fileupload", new FileBody(file, mimeType));
			mpe.addPart("url", new StringBody("paste url here"));
			mpe.addPart("email", new StringBody(""));
			mpe.addPart("MAX_FILE_SIZE", new StringBody(""+5000000));
			mpe.addPart("refer", new StringBody(""));
			mpe.addPart("brand", new StringBody(""));
			mpe.addPart("optsize", new StringBody("320x320"));
			
			final HttpPost httpPost = new HttpPost("http://imageshack.us/");
			httpPost.setEntity(mpe);
	
			response = new DefaultHttpClient().execute(httpPost);
			
			statusCode = response.getStatusLine().getStatusCode();
			if(statusCode != HttpStatus.SC_MOVED_TEMPORARILY || statusCode == HttpStatus.SC_MOVED_PERMANENTLY) {
				throw new IllegalStateException("Expected 302, got "+statusCode);
			}

			final String landingPage = response.getLastHeader("location").getValue(); 
			result.setProperty("landing_page", landingPage);
			
			final HttpGet getRequest = new HttpGet(landingPage);
			response = new DefaultHttpClient().execute(getRequest);
				
			statusCode = response.getStatusLine().getStatusCode();
			if(statusCode != HttpStatus.SC_OK) {
				throw new IllegalStateException("Expected 200, got "+statusCode);
			}

			final String content = EntityUtils.toString(response.getEntity());

			matcher = fullPic.matcher(content);
			if(matcher.find()) {
				result.put("direct", matcher.group(1));
			}
			
			matcher = forumThumbPattern.matcher(content);
			if(matcher.find()) {
				result.put("forum_thumb", matcher.group(1));
			}
						
			matcher = htmlThumbPattern.matcher(content);
			if(matcher.find()) {
				// http://apache.mirror.clusters.cc//commons/lang/binaries/commons-lang-2.5-bin.tar.gz
				result.put("html_thumb", StringEscapeUtils.unescapeHtml(matcher.group(1)));
			}
			
			return result;
		} catch(final Throwable t) {			
			throw new RuntimeException("Error uploading "+file+"!", t);
		}
	}

	public static void main(String[] args) throws IOException {	
		final File file = new File("irgendeinbild.jpg");
		System.out.println(new ImageShackUploadDemo().uploadToImageShack(file, "image/jpeg"));
	}
}
 
Zuletzt bearbeitet:

Jigga

Bekanntes Mitglied
Hier ist ein Prototyp imageshack.us:

ich danke dir vielmals,werde es gleich mal ausprobieren und dann rückmeldung geben :)





EDIT:
ok es funktioniert echt super,habs jetzt auch so weit abgeändert,dass mir nur der direkte link zum bild ausgegeben wird.
eine weitere frage hätte ich noch: Wie gehe ich ans erstellen von forum themen am besten ran?
habe es jetzt eine weile auf der basis meiner forum login class probiert (die soweit ich beurteilen kann gut funktioniert) .Das klappte leider nicht,wahrscheinlich,weill ein forum post anders aufgebaut ist als eine simpler login post?
Habt ihr da vielleicht ideen?Das ganze soll recht schlicht sein,sprich ein kurzes thema erstellen mit einem relativ kurzen text
 
Zuletzt bearbeitet:

kay73

Bekanntes Mitglied
Ich weiß ja nicht, was Du alles an Vorarbeit geleistet hast, aber da es Forensoftware wie Sand am Meer gibt, bleibt nichts anderes als den Netztraffic und den Quelltext zu analysieren, falls es OpenSource ist. Und dass selbstverständlich für alle Arten von Posts und es ist klar, daß ein login und ein wie auch immer gearteter Beitrags oder Threadpost nichts miteinander zu tun haben. Vor allem sind die Macher und Betreiber von Foren i. a. nicht daran interessiert, das jemand automatisch Content hineinpumpt. :noe:

Welche Forensoftware ist es denn? Wenn es sich um ein phpbb- bzw. Bbcode kompatibles Forum handelt, kannst Du doch das IMG Markup vin imageshack gleich verwenden.
 
Zuletzt bearbeitet:

Jigga

Bekanntes Mitglied
Ich weiß ja nicht, was Du alles an Vorarbeit geleistet hast, aber da es Forensoftware wie Sand am Meer gibt, bleibt nichts anderes als den Netztraffic und den Quelltext zu analysieren, falls es OpenSource ist. Und dass selbstverständlich für alle Arten von Posts und es ist klar, daß ein login und ein wie auch immer gearteter Beitrags oder Threadpost nichts miteinander zu tun haben. Vor allem sind die Macher und Betreiber von Foren i. a. nicht daran interessiert, das jemand automatisch Content hineinpumpt. :noe:

Welche Forensoftware ist es denn? Wenn es sich um ein phpbb- bzw. Bbcode kompatibles Forum handelt, kannst Du doch das IMG Markup vin imageshack gleich verwenden.

Ich hab mir schon gedacht,dass man sich sorgen machen wird. Aber ich kann dich beruhigen. Das zukünftige Programm ist von den Betreibern sogar erwünscht,weil es einen gewissen Vorgang erleichtert.
Beim Forum handelt sich um das free Forum von phpBB.
Ich hab bereits versucht mir mit den live httpheaders addon weiterzuhelfen,aber gut werde mal in den quelltest reinschauen. Dabei wäre der quelltext der Seite "New topic" das richtige für mich,oder bräuchte ich noch was?
 

Jigga

Bekanntes Mitglied
mir ist gerade eingefallen,dass ich den forum post ja eigentlich auch mit hilfe eines anderen tools und per batch file erstellen könnte, die ich dann per java statement aufrufe.
wäre das nicht irgendwo einfacher?
 

kay73

Bekanntes Mitglied
Grundsätzlich gilt, daß das eigentlich kein Java-Problem ist. Ich habe mich vor'm Schlafengehen jetzt zwei Tage mit phpBB3.0.7-PL1 herumgeschlagen und konnte das Einloggen recht problemlos realisieren. Aber es ist mir nicht gelungen, einen Thread zu erstellen. Ich habe:
  • die POST-Url mit SID richtig ausgelesen
  • alle Cookies mitgeschickt
  • den Multipart nachgebaut (...aber ohne den Fileupload-Part, vielleicht liegt es daran. Es ändert sich aber das HTML-Form Element, wenn man Attachments disabled. Das nervt.)
  • die Referer richtig gesetzt
  • den User-Client richtig gesetzt
Ich habe keine Ahnung, was da schiefläuft; vielleicht ist es nur ein Mini-Detail aber ich müsste die Ursache mit einem PHP-Debugger suchen und dazu fehlt mir einfach die Zeit. Sorry.
 
Zuletzt bearbeitet:

Jigga

Bekanntes Mitglied
Grundsätzlich gilt, daß das eigentlich kein Java-Problem ist. Ich habe mich vor'm Schlafengehen jetzt zwei Tage mit phpBB3.0.7-PL1 herumgeschlagen und konnte das Einloggen recht problemlos realisieren. Aber es ist mir nicht gelungen, einen Thread zu erstellen. Ich habe:
  • die POST-Url mit SID richtig ausgelesen
  • alle Cookies mitgeschickt
  • den Multipart nachgebaut (...aber ohne den Fileupload-Part, vielleicht liegt es daran. Es ändert sich aber das HTML-Form Element, wenn man Attachments disabled. Das nervt.)
  • die Referer richtig gesetzt
  • den User-Client richtig gesetzt
Ich habe keine Ahnung, was da schiefläuft; vielleicht ist es nur ein Mini-Detail aber ich müsste die Ursache mit einem PHP-Debugger suchen und dazu fehlt mir einfach die Zeit. Sorry.


Hmm das hört sich ja nicht sehr dolle an.ich dachte echt,dass es etwas leichter gehen würde.
Ich hab den login zwar bereits,aber könntest du mir vll dennoch das zukommen lassen was du zusammengestellt hast?vielleicht kann ich da beim forum post ansetzen und weiter "rumprobieren"
wäre sehr nett von dir :)

EDIT:
Probiere das ganze jetzt auch schon die ganze zeit.Habs mir mit http live headers anegschaut und am ende 2 "auth[]" felder gefunden mit jeweils einer verschiedenen zahlen + buchstaben folge.diese scheinen bei jedem user immer gleich zu bleiben wenn ich mich nicht irre.die müsste ich dann ja auch in den multipart einbauen,jedoch weiß ich noch nicht so recht,wo ich die herbekommen soll
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
B Image Matching in Memory Minigame Java Basics - Anfänger-Themen 7
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
T Image Icon Java Basics - Anfänger-Themen 3
K File (png) in Image laden Java Basics - Anfänger-Themen 3
M Image löschen Java Basics - Anfänger-Themen 2
G Image in Vordergrund Java Basics - Anfänger-Themen 3
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
H Image laden Java Basics - Anfänger-Themen 4
R Image drehen Java Basics - Anfänger-Themen 1
R Image Teilen Java Basics - Anfänger-Themen 3
B Image laden im GridBagLayout Java Basics - Anfänger-Themen 3
N Image von Resource wird nicht geladen Java Basics - Anfänger-Themen 2
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
F Image wird nicht gezeichent?! Java Basics - Anfänger-Themen 21
N Hintergrund image mit .setContentPane Java Basics - Anfänger-Themen 6
W aus Methode auf JLabel zugreifen und Image verändern Java Basics - Anfänger-Themen 1
S buffered image Java Basics - Anfänger-Themen 18
V Scale displayed Image via JCheckBox Java Basics - Anfänger-Themen 1
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
S Image nach MausMotion rotieren Java Basics - Anfänger-Themen 7
L Erste Schritte Java Image und Video-Slideshow GUI Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
S Image in Panel laden Java Basics - Anfänger-Themen 12
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
V Image Crawler Java Basics - Anfänger-Themen 3
P Erste Schritte Buffered Image splitten und darstellen Java Basics - Anfänger-Themen 2
P Erste Schritte Image anzeigen in ausführbarer jar mit der Toolkit class Java Basics - Anfänger-Themen 8
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
A Image (Bitmap) in String (für XML) Java Basics - Anfänger-Themen 7
F Buffered Image über Socket versenden Java Basics - Anfänger-Themen 6
T Image ist Null - warum? Java Basics - Anfänger-Themen 18
V Image -> 2D Array (int [][]) Java Basics - Anfänger-Themen 4
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
V FileInputStream auf ein swt.Image Java Basics - Anfänger-Themen 6
A Wie kann man etwas von Typ Image wieder löschen? Java Basics - Anfänger-Themen 7
F Image übertragen und zeichnen Java Basics - Anfänger-Themen 8
G Problem mit Image.IO.read( File ) Java Basics - Anfänger-Themen 3
G Image spiegeln Java Basics - Anfänger-Themen 17
Y Trotz add wird Image in GradBagLayout nicht angezeigt Java Basics - Anfänger-Themen 5
Spin Image helper Java Basics - Anfänger-Themen 6
M Image Metadaten setzen Java Basics - Anfänger-Themen 2
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
C Image draw... Java Basics - Anfänger-Themen 7
M Image-Icon Ändern Java Basics - Anfänger-Themen 15
R Image laden die Zweite Java Basics - Anfänger-Themen 4
R Image laden Java Basics - Anfänger-Themen 10
M Image zeichenen mit Double Werten Java Basics - Anfänger-Themen 4
B polyline auf buffered image malen Java Basics - Anfänger-Themen 2
G Image to File Java Basics - Anfänger-Themen 4
T Image Position erkennen Java Basics - Anfänger-Themen 6
Spin Image skalieren Java Basics - Anfänger-Themen 2
Spin Background Image Java Basics - Anfänger-Themen 2
K Image / drawImage Java Basics - Anfänger-Themen 2
P Buffered Image, Bereich ausschneiden Java Basics - Anfänger-Themen 3
F Image Editor Java Basics - Anfänger-Themen 2
R Image aus jar laden (dieses mal awt) Java Basics - Anfänger-Themen 19
B Image flimmert Java Basics - Anfänger-Themen 4
Povlsen84 Image exakt erzeugen Java Basics - Anfänger-Themen 5
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
X ARGB Werte auslesen aus Image Java Basics - Anfänger-Themen 2
O Image Loader laedt bild nicht Java Basics - Anfänger-Themen 11
H String to image! Java Basics - Anfänger-Themen 6
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
M Probleme mit Manifest und Image Java Basics - Anfänger-Themen 2
T Java Bilderverwaltung - Image Fetcher Problem Java Basics - Anfänger-Themen 4
E Image in Datei speichern bzw anzeigen Java Basics - Anfänger-Themen 5
G Image laden Java Basics - Anfänger-Themen 16
O Drag & Drop mit Image? Java Basics - Anfänger-Themen 2
G Image/-Icon wird nicht auf JPanel angezeigt Java Basics - Anfänger-Themen 4
M Image aus JPanel Java Basics - Anfänger-Themen 2
G Kompletten (image) Array löschen Java Basics - Anfänger-Themen 14
P Fileinputstream to image? Java Basics - Anfänger-Themen 3
G Image Problem Java Basics - Anfänger-Themen 5
G Image Java Basics - Anfänger-Themen 3
M draw.Image Java Basics - Anfänger-Themen 11
O Image laden Java Basics - Anfänger-Themen 6
G Image Java Basics - Anfänger-Themen 2
S Image-Datei mit relativem Pfad angeben Java Basics - Anfänger-Themen 3
S Botton und Image kombinieren Java Basics - Anfänger-Themen 3
S import javax.image.io.*; funktioniert nicht Java Basics - Anfänger-Themen 28
D Image drehen Java Basics - Anfänger-Themen 6
DeeDee0815 Uncaught error fetching image Java Basics - Anfänger-Themen 2
A Image erstellen Java Basics - Anfänger-Themen 3
N Grösse eines Image ändern? Java Basics - Anfänger-Themen 4
I Image Dateinformationen auslesen Java Basics - Anfänger-Themen 7
A image uploader applet Java Basics - Anfänger-Themen 10
S image speichern Java Basics - Anfänger-Themen 12
D ImageIO metadata auslesen aus png image Java Basics - Anfänger-Themen 2
G Ausmaße eines Image-Object herrausfinden Java Basics - Anfänger-Themen 4
R Einem Image-Object Alpha-Transparenz hinzufügen Java Basics - Anfänger-Themen 3
S Image in byte[] umwandeln? Java Basics - Anfänger-Themen 2
G Ein Image langsam einblenden und nach 5 Sekunden ausblenden? Java Basics - Anfänger-Themen 10
U Image einlesen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben