2010-03-14 5 views
3

J'essaye d'envoyer une image au serveur d'Imgur. Tout s'est bien passé et je reçois l'URL de l'image de l'analyseur, mais quand j'essaie de l'ouvrir sur le navigateur Web, je ne reçois pas l'image ... seulement une icône "image brisée".Aide avec Imgur API et VB.NET - Image POST

Je pense que c'est un problème dans la conversion au tableau d'octets .... mais je ne comprends pas. S'il vous plaît laissez-moi savoir/corriger mon code.

Dim image As Image = image.FromFile(OpenFile.FileName) 
    Dim ms As New MemoryStream() 
    ' Convert Image to byte[] 
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) 
    Dim imageBytes As Byte() = ms.ToArray() 
    Dim wb As WebRequest = WebRequest.Create(New Uri("http://imgur.com/api/upload.xml")) 
    wb.ContentType = "application/x-www-form-urlencoded" 
    wb.Method = "POST" 
    wb.Timeout = 10000 
    Console.WriteLine(imageBytes.Length) 
    Dim parameters As String = "key=a801fa0b08a2117f5bb62b006f769b99&image=" + Convert.ToBase64String(imageBytes) 
    Dim encoding As New System.Text.UTF8Encoding() 
    Dim bytes As Byte() = encoding.GetBytes(parameters) 
    Dim os As System.IO.Stream = Nothing 
    Try 
     wb.ContentLength = bytes.Length 
     os = wb.GetRequestStream() 
     os.Write(bytes, 0, bytes.Length) 
     Dim xmlData As String = POSThandling.makePOSTrequest("http://imgur.com/api/upload.xml", New String() {parameters}) 
     Dim xmlDoc As XmlDocument = New XmlDocument() 
     xmlDoc.LoadXml(xmlData) 
     Dim name As XmlNodeList = xmlDoc.GetElementsByTagName("original_image") 
     Dim imageText As String = (name(0).InnerText).ToString 
     messageText.Text = imageText.ToString 
     PanelUpload.Visible = False 
     UpImage.Enabled = True 
     SendMsg.Enabled = True 
    Finally 
     If Not (os Is Nothing) Then 
     End If 
    End Try 

Répondre

1

Voici l'exemple de l'API Imgur en C#

http://api.imgur.com/examples#uploading_cs

Pour répondre à votre question, vous devez d'abord lire l'image dans un tableau d'octets. Convertissez ensuite le tableau d'octets bruts en chaîne codée en Base64.

FileStream fileStream = File.OpenRead(imageFilePath); 
byte[] imageData = new byte[fileStream.Length]; 
fileStream.Read(imageData, 0, imageData.Length); 
fileStream.Close(); 
string base64EncodedImage = System.Convert.ToBase64String(imageData);