Ho un problema nel caricare le immagini su http://imm.io/(è la prima volta che mi avventuro nei metodi di HttpWebRequest, quindi abbiate pazienza
).
Come è riportato nella api del sito, vorrei fare questo tipo di lavoro:
codice:
<form action="http://imm.io/store/" method="post"
enctype="multipart/form-data">
<input name="name" value="logo.png" type="hidden" />
<input name="image"
value="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
type="hidden" />
<input type="submit" />
</form>
Tradotto però in VB.NET.
Ho già scritto varie righe di codice, ma ottengo sempre la seguente risposta dal server:
codice:
{"success":false, "payload":"error uploading"}
Che indica la riuscita fallita del caricamento dell'immagine.
Il codice da me scritto è:
codice:
Public Sub PostToImmio(ByVal FileName As String)
'Lettura immagine in un array di bytes.
Dim imageData As Byte()
Dim fs As FileStream = File.OpenRead(FileName)
imageData = New Byte(fs.Length) {}
fs.Read(imageData, 0, imageData.Length)
fs.Close()
'Converto l'immagine in una stringa di base64
Const MAX_URI_LENGTH As Integer = 32766
Dim base64img As String = System.Convert.ToBase64String(imageData)
Dim sb As StringBuilder = New StringBuilder()
Dim i As Integer = 0
While i < base64img.Length
sb.Append(Uri.EscapeDataString(base64img.Substring(i, Math.Min(MAX_URI_LENGTH, base64img.Length - i))))
i += MAX_URI_LENGTH
End While
'Carico l'immagine
Dim uploadRequestString As String = "data:image/png;base64," & sb.ToString()
Dim webReq As HttpWebRequest = DirectCast(WebRequest.Create("http://imm.io/store/"), HttpWebRequest)
webReq.Method = "POST"
webReq.ContentType = "multipart/form-data"
webReq.ServicePoint.Expect100Continue = False
Dim sw As StreamWriter = New StreamWriter(webReq.GetRequestStream())
sw.Write(uploadRequestString)
sw.Close()
'Ottengo la risposta dal server.
Dim response As WebResponse = webReq.GetResponse()
Dim responseStream As Stream = response.GetResponseStream()
Dim responseReader As StreamReader = New StreamReader(responseStream)
Dim responseString As String = responseReader.ReadToEnd()
End Sub
Grazie dell'aiuto
sentitevi liberi di insultarmi