ImageShack Uploadlibrary

    • Release

    Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von mXg.

      ImageShack Uploadlibrary

      Ich biete euch ein kleines Library mit welchem man ohne große Probleme Bilder zu dem Imagehoster ImageShack.us hochladen kann.

      Das Library unterstützt zwei Methoden des Uploads:
      -Upload
      -UploadAsync

      Beim normalen Upload wird das Bild im gleichen Thread hochgeladen, was grade bei größeren Dateien dazu führen kann, dass die UI einfriert. Die Methode UploadAsync startet den Upload in einem neuen Thread und feuert das Event UploadImageComplete wenn das Bild vollständig hochgeladen wurde. In beiden fällen wird dem Benutzer nach dem hochladen ein Objekt vom Typ UploadResult zur Verfügung gestellt, was folgende Informationen beinhaltet:
      • ImageURL - Der direktlink zum hochgeladenen Bild
      • ThumbnailURL - Der link zum Thumbnail des hochgeladenen Bildes
      • BB-Code - BB-Code zum direkten einfügen in einem Forenpost
      • Resolution - Die Auflösung des hochgeladenen Bildes
      • Filesize - Die Dateigröße des hochgeladenen Bildes


      Beispiel zum einfachen Upload

      VB.NET-Quellcode

      1. 'Erstelle neuen UploadClient
      2. Dim up_client As New ImageShackUpload.Client()
      3. 'Deklariere Rückgabeobjekt
      4. Dim Result As ImageShackUpload.UploadResult
      5. 'Bild hochladen und Rückgabeobjekt zuweisen
      6. Result = up_client.Upload("C:\MeineBilddatei.png")
      7. 'Jetzt kann mit Result.X auf alle Informationen zugegriffen werden die das Objekt bereitstellt


      Beispiel zum asynchronen Upload

      VB.NET-Quellcode

      1. 'Private, Formweite, instanz vom UploadClient erstellen
      2. Private WithEvents up_client As New ImageShackUpload.Client
      3. 'An einer beliebigen Stelle kann nun das Bild asynchron hochgeladen werden
      4. up_client.UploadAsync("C:\MeineBilddatei.png")
      5. Private Sub up_client_UploadImageComplete(ByVal sender As Object, ByVal e As ImageShackUpload.UploadImageCompleteEventArgs) Handles up_client.UploadImageComplete
      6. 'Dieses Event wird aufgerufen wenn das Bild erfolgreich hochgeladen wurde.
      7. 'Über e.Result.X kann auf alle Informationen zugegriffen werden, die das Objekt bereitstellt
      8. 'Achtung: In dieser Funktion kann nicht auf GUI-Elemente zugegriffen werden da sie sich noch
      9. 'in einem anderen Thread befindet. Dafür muss Form.Invoke() verwendet werden.
      10. End Sub


      Alle Methoden habe ich zusätzlich Kommentiert (daher auch die XML-Datei im Archiv).
      Habe es mehrfach getestet und konnte keine Fehler ausmachen, falls doch jemand einen Fehler findet, bitte melden :)
      Download im Anhang.
      Dateien

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Maximilian“ () aus folgendem Grund: Update

      Ja, da hast du natürlich recht, der Upload-Request läßt sich aber recht einfach ändern/ergänzen, so dass ich auch mehrere Hoster unterstützen könnte. Wenn du andere ImageHoster kennst die entwicklern ihre API anbieten dann immer her damit :-)
      Nein, ist er nicht. Beim Zugriff aus dem Event auf die TextBox wird dir eine Exception um die Ohren fliegen weil der direkte Zugriff aus einem anderen Thread auf die GUI nicht möglich ist. Steht alles in dem Beispielcode oben. Such hier im Forum mal nach Invoke und Delegate, da sollteste alles notwendige finden.

      Cheerio

      VB.NET-Quellcode

      1. Function ByteArrayFromImage(Image As Image) As Byte()
      2. Dim str As New IO.MemoryStream()
      3. Image.Save(str,Imaging.ImageFormat.Jpeg)'Als JPEG zwischenspeichern
      4. Dim buffer() As Byte = str.Toarray()
      5. str.Close()
      6. Return buffer
      7. End Function
      8. WebClient.UploadDataAsync(New Uri("Addresse des Bildes"),ByteArrayFromImage(PictureBox1.Image))

      kein Problem ;)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Ich hab es jetzt so gemacht:

      VB.NET-Quellcode

      1. up_client.UploadAsync(ByteArrayFromImage(PictureBox1.Image)


      Jetzt kommt aber die Fehlermeldung-:
      Der Wert vom Typ "1-dimensionales Array von Byte" kann nicht in "String" konvertiert werden.


      MFG