Hallo,
vielleicht hat der ein oder andere schon meinen Thread von heute Mittag gesehen, da ich ein Projekt suche/gesucht habe.
Ich habe Gefallen daran gefunden ein Java Programm zu schreiben, das mir ein Bild hochladen soll und auch ein Screenshot den man machen kann hochladen soll.
Ich habe bereits einen FileChooser implementiert und das klappt soweit.
Nunja jetzt fehlen mir jegliche Ansätze um das Bild auf irgendeinen Service hochzuladen.
Auf meinen eigenen FTP-Server kriege ich es, das habe ich bereits implementiert doch mir wäre lieber wenn man das Bild auf einen Service wir imageshack oder tinypic oder so hochladen könnte.
Welcher Service genau das nun ist wäre mir erstmal egal.
Hat vielleicht jemand einen Vorschlag ?
Ich habe auch schon diese org.apache Importe gesehen, doch würde ich es gerne ohne zusätzliche .jar bewerkstelligen.
Also, wenn du schon einen Ansatz hast, dein Bild (woher auch immer) auf deinen HomeFTP zu schieben, dann zeig mal ein wenig Code her und kommentiere mal genau, wo dein Problem liegt.
Irgendwie sehe ich nicht, was an einem eigenen Server schlecht sein soll, wen du eh schon einen hast. Imagehoster nerven meist nur mit Werbung.
Für den Zugriff auf einen Imagehoster wirst du auch sehr wahrscheinlich eine lib brauchen, wenn du dir nicht einen sehr hohen Extra-aufwand machen möchtest.
Ehm es spricht nichts gegen eine externe Bibliothek nur ich weis nicht wie es dir geht, aber wenn es mit den Standardmitteln geht ist mir das lieber als da noch zusätzliche Bibliotheken zu benutzen
Irgendwie sehe ich nicht, was an einem eigenen Server schlecht sein soll, wen du eh schon einen hast. Imagehoster nerven meist nur mit Werbung.
Für den Zugriff auf einen Imagehoster wirst du auch sehr wahrscheinlich eine lib brauchen, wenn du dir nicht einen sehr hohen Extra-aufwand machen möchtest.
Ja aber ich will ja nicht die ganzen Bilder auf dem FTP Server draufliegen haben, irgendwann wird das zu viel und andere Leute denen ich mein Programm geben will vertrauen halt eher einer Seite die sie standardmäßig zum ImageUpload benutzen als irgendso einem FTP server
Also zwischen irgendeinem ftp server und irgendeinen hoster würde ich keinen Unterschied ziehen als Nutzer.
Als Entwickler der Software hingegen würde ich nicht meinen Server zur allgemeinen Verwendung zur Verfügung stellen wollen, eher eine Möglichkeit einbauen, dass die Leute ihre eigenen Serverdaten eintragen können
Naja, ich verwende für ein ähnliches Programm Flickr, siehe hier.
Afaik kommt man nur mit Bordmitteln von Java nicht einfach mal eben an einen Hoster ran.
Schau mal hier: Developers - Photobucket Developer Site
Solche developer seiten gibts bestimmt bei anderen Imagehostern auch. Das ganze hat aber weniger mit java zu tun.
@ColaColin Danke habe das bei meiner Suche schon gesehen doch leider geht das nur für Windows und ich will das mein Programm überall funktioniert
2. Hat nicht jeder einen eigenen Ftp Sever !
@bert0r
Ja danke ich werde mal schauen ob ich da was zu finde
Mag sein, dass der Code den ich da zusammengestümpert habe, nur auf Windows funktioniert, aber prinzipiell sollte die Library auf jeder Plattform laufen ?!
Ok habe nun Jickr eingebunden.
Ich denke ich kann ja einfach einen Flickr Account erstellen und dann spare ich mir das Implementieren der individuellen Authentifizierung. Das Programm ist ja sowieso nur für mich und ein paar Freunde.
Ich schaue dann mal ob ich das soweit hinbekomme.
Hm gibt zufällig mal einen Beispiel Code zum implementieren von jickr, außer dem von ColaColin ?
Denn bei deinem verwirrt mich der Authentifizierungsprozess. Ich möchte ja immer den gleichen Account anmelden.
Ok habe nun folgendes versucht:
Ich weiß es wird ziemlich falsch sein, trotzdem hoffe ich hier dieses Problem zu lösen:
Java:
JFileChooser fc =newJFileChooser();BufferedImage img;publicstaticString API_KEY ="d8a45ba81c301aebdbe1ebf074434119";publicstaticString SHARED_SECRET ="9ed7a2cbcc426d7c";..........................................
uploadBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvent e){try{User user =Auth.getDefaultAuthUser();if(user ==null)thrownewException("Login in a different app (like LoginTest)");Auth.setAuthContext(Auth.getDefaultAuthUser());Flickr.setApiKey(API_KEY);Flickr.setSharedSecret(SHARED_SECRET);}catch(Exception exc){}
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.setMultiSelectionEnabled(false);if(fc.showOpenDialog(UploadFrame.this)==JFileChooser.APPROVE_OPTION){File file = fc.getSelectedFile();if((file.getName()!=null)&& file.getName().toLowerCase().endsWith(".png")|| file.getName().toLowerCase().endsWith(".jpg")|| file.getName().toLowerCase().endsWith(".jpeg")|| file.getName().toLowerCase().endsWith(".gif")|| file.getName().toLowerCase().endsWith(".tiff")){
pathField.setText(""+ file);try{ImageIO.write(img,"png", file);Photo newPhoto =Photo.create(file,"Test");System.out.println("Success! Photo ID is "+ newPhoto.getID());}catch(IOException ioEx){}catch(FlickrException fe){}}else{JOptionPane.showMessageDialog(UploadFrame.this,"Bitte nur Bilder auswählen !","Dateiendung nicht unterstützt",JOptionPane.ERROR_MESSAGE);}}else{System.out.println("Gecanceled");}}});
Ok was mache ich falsch ? Ich denke mal ImageIO ist falsch, da es null ist ?
Hier der StackTrace:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: im == null!
at javax.imageio.ImageIO.write(ImageIO.java:1457)
at javax.imageio.ImageIO.write(ImageIO.java:1527)
at UploadFrame$1.actionPerformed(UploadFrame.java:62)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6373)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6138)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4735)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
danke, aber ich erhalte trotzdem noch den Fehler
Vielleicht kennt ja ColaColin die Lösung ? immerhin hast du es ja schonmal implementiert bekommen !
Vielen Dank !