2010-03-14 2 views
3

Imgur의 서버로 이미지를 보내려고합니다. 모든 것이 잘되었고 파서에서 이미지의 URL을 얻었지만 웹 브라우저에서 이미지를 열려고 할 때 이미지가 표시되지 않고 "깨진 이미지"아이콘 만 표시됩니다.Imgur API 및 VB.NET에 대한 도움말 - 이미지 POST

바이트 배열로의 변환에 문제가 있다고 생각합니다.하지만 이해가 가지 않습니다. 나에게 내 코드를 알려주거나/수정 해줘.

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

여기

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

귀하의 질문에 대답하려면, 당신은 첫 번째 바이트의 배열로 이미지를 읽을 필요가 C 번호에 Imgur의 API의 예입니다. 원시 바이트 배열을 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);