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:
2) código de la segunda parte. Inserta datos pero no inserta el binario en sí correctamente<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>
Código:
Creo que el problema está en este trozo: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
Código:
Si me podéis echar un cable os lo agradecería pues estoy un poco/bastante perdido. Toni. ' 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) & "')"