Помощь с Imgur API и VB.NET - Image POST - PullRequest
3 голосов
/ 14 марта 2010

Я пытаюсь отправить изображение на сервер Imgur. Все прошло нормально, и я получаю URL-адрес изображения из парсера, но когда я пытаюсь открыть его в веб-браузере, я не получаю изображение ... только значок "сломанное изображение". *

Я думаю, что это проблема при преобразовании в байтовый массив .... но я не понимаю. пожалуйста, дайте мне знать / исправить мой код.

   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

1 Ответ

1 голос
/ 20 августа 2010

Вот пример Imgur API в C #

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

Чтобы ответить на ваш вопрос, вам нужно сначала прочитать изображение в массив байтов. Затем преобразуйте необработанный байтовый массив в строку в кодировке 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);
...