Foros del Web » Programación para mayores de 30 ;) » .NET »

Subir archivo binario a un campo blob de oracle desde un nodo de un documento xml

Estas en el tema de Subir archivo binario a un campo blob de oracle desde un nodo de un documento xml en el foro de .NET en Foros del Web. El tema es el siguiente. 1) Una página construye con código cliente y en memoria un documento XML. En uno de los nodos se le ...
  #1 (permalink)  
Antiguo 31/01/2007, 08:41
 
Fecha de Ingreso: abril-2003
Mensajes: 136
Antigüedad: 21 años
Puntos: 0
Subir archivo binario a un campo blob de oracle desde un nodo de un documento xml

El tema es el siguiente.

1) Una página construye con código cliente y en memoria un documento XML. En uno de los nodos se le incluye un archivo binario, que después se asigna como valor de un campo oculto y se envía a la misma página aspx
2) Se procesa por código de servidor, selecciona el contenido binario del nodo xml e intenta insertarlo en un campo blob de oracle

1) código de la primera parte (funciona ok)
Código:
    <script language=javascript>
    function creaObjecte()
    {
       // create ADO-stream Object
       var ado_stream = new ActiveXObject("ADODB.Stream");
 
       // create XML document with default header and primary node
       var xml_dom = new ActiveXObject("MSXML2.DOMDocument");
       xml_dom.loadXML('<?xml version="1.0" ?> <root/>');
       // specify namespaces datatypes
       xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes");
 
       // create a new node and set binary content
       var l_node1 = xml_dom.createElement("file1");
       l_node1.dataType = "bin.base64";
       // open stream object and read source file
       ado_stream.Type = 1;  // 1=adTypeBinary 
       ado_stream.Open(); 
       ado_stream.LoadFromFile("C:\\TEMP\\b.pdf");
       // store file content into XML node
       l_node1.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll
       ado_stream.Close();
       xml_dom.documentElement.appendChild(l_node1);
 
       document.getElementById("p_arxiu").value = xml_dom.xml;
    }   
    </script>
2) código de la segunda parte. Inserta datos pero no inserta el binario en sí correctamente

Código:
    Protected Sub btnenviar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnenviar.Click
 
        ' Cadena de connexió a oracle
        'Dim connectionString As String = "Data Source=AJSTJUST; Password=ajstjust;User ID=AJSTJUST"
        Dim connectionString As String = "Data Source=AJSTJUSTCREAF; Password=sipan_mact;User ID=sipan_mactuacions"
 
        ' Recuperem l'arxiu binari del node que toca
        Dim nodeBinari As XmlNode
 
        Dim xmlHidden As XmlDocument
        xmlHidden = New XmlDocument()
        xmlHidden.LoadXml(arxiuBinari)
 
        ' Seleccionem el node que conté el binari
        nodeBinari = xmlHidden.DocumentElement.SelectSingleNode("file1")
        If (nodeBinari Is Nothing) Then
            Response.Write("No s'ha trobat el node<br>")
            Exit Sub
        End If
 
        ' Passem el contingut del node a format binari
        Dim binariFinal() As Byte = Convert.FromBase64String(nodeBinari.InnerText)
 
        Dim queryString As String = _
         "INSERT INTO DEMO (ID,THEBLOB) VALUES (1,'" & binariFinal(1) & "')"
 
        Using connection As New OracleConnection(connectionString)
            Dim command As New OracleCommand(queryString)
            command.Connection = connection
            Try
                connection.Open()
                command.ExecuteNonQuery()
            Catch ex As Exception
                Response.Write(ex.Message)
            End Try
        End Using
 
    End Sub
Creo que el problema está en este trozo:

Código:
        ' Passem el contingut del node a format binari
        Dim binariFinal() As Byte = Convert.FromBase64String(nodeBinari.InnerText)
 
        Dim queryString As String = _
         "INSERT INTO DEMO (ID,THEBLOB) VALUES (1,'" & binariFinal(1) & "')"
Si me podéis echar un cable os lo agradecería pues estoy un poco/bastante perdido. Toni.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:14.