Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88

    [VB.NET]Caricare immagini su imm.io

    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

  2. #2
    Probabilmente non funziona perché il server si aspetta di ricevere i campi Name e Image, mentre nel tuo codice hai solo convertito l'immagine in stream senza indicare il nome del campo.
    Guarda questo esempio, ti potrebbe tornare utile:
    http://www.xtremevbtalk.com/showthread.php?t=158765
    Chi non cerca trova.

  3. #3
    Utente di HTML.it L'avatar di IAL32
    Registrato dal
    Aug 2011
    Messaggi
    88
    Il tuo link mi ha illuminato tas
    codice:
        Public Function PostToImmio(ByVal FileName As String) As String
            'Lettura immagine in un array di bytes.
            Dim imageData As Byte() = File.ReadAllBytes(FileName)
            'Converto l'immagine in una stringa in base 64
            Dim base64img As String = System.Convert.ToBase64String(imageData)
            Dim uploadRequestString As String = "data:image/png;base64," & base64img
            Dim FInfo As New FileInfo(FileName)
            'Dichiaro una nuova NameValueCollection da utilizzare in seguito
            Dim myNewValueColl As New NameValueCollection()
            'Imposto il content-Type a multipart/form-data
            myNewValueColl.Add("Content-Type", "multipart/form-data")
            'Assegno a image il valore della stringa uploadRequestString
            myNewValueColl.Add("image", uploadRequestString)
            'Mentre a name assegno il valore del file selezionato
            myNewValueColl.Add("name", FInfo.Name)
            'Ottengo la risposta dal server, utilizzando il metodo
            '.UploadValues(adress As String, method As String, data As System.Collections.Specialized.NameValueCollections) As Byte()
            Dim Response As Byte() = immioWC.UploadValues("http://imm.io/store/", "POST", myNewValueColl)
            'Ne ottengo la risposta, convertita in string
            Return Encoding.ASCII.GetString(Response)
            'by IAL32 :)
        End Function
    Ho messo tutte le spiegazioni sul codice, spero di essere stato d'aiuto a qualcuno, anche se lo dubito assai

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.