Options

how to put a jpg file into a xml file by xmlport ?

snyktpsnyktp Member Posts: 75
Hello,

Do you have any ides how to put a jpg file into a xml file ?

Thank you

PS : I coudnt find anything about that in the mibuso..

Answers

  • Options
    MalajloMalajlo Member Posts: 294
    Once I wrote func in ver 3.6 for sending data (ordinary txt file made with dataport) to webservice (and could be some variables not used)
    I think you'll find a clue how to do it... You have to encode jpg and it is done in Convert2binary (parameter is path and filename).
    RemoteFile is the name of file that will be sent, local file is used in Convert2Binary.

    Code that prepares data...
    LocalFile := Clan."Company No."+'.txt' ;
            Trans.FILENAME(Path+'\'+LocalFile) ;
            Trans.IMPORT ;
            Trans.RUNMODAL ;
            SOAP.SOAP('http://foo.net/FileUp.asmx',
              Path+'\'+LocalFile,
              LocalFile,
              'docbinaryarray',
              'docname',
              'SaveDocument',
              'SaveDocumentResponse') ;
            ERASE(Path+'\'+LocalFile) ;
    


    Codeunit: Send2net
    Globals...
    XMLDocOut	Automation	'Microsoft XML, v3.0'.DOMDocument	
    XMLDomElement	Automation	'Microsoft XML, v3.0'.IXMLDOMElement	
    XMLEnv	Automation	'Microsoft XML, v3.0'.IXMLDOMNode	
    XMLBody	Automation	'Microsoft XML, v3.0'.IXMLDOMNode	
    XMLAct	Automation	'Microsoft XML, v3.0'.IXMLDOMNode	
    XMLPar	Automation	'Microsoft XML, v3.0'.IXMLDOMNode	
    XMLProccesingInst	Automation	'Microsoft XML, v3.0'.IXMLDOMProcessingInstruction	
    XMLDOMManagement	Codeunit	XML DOM Management	
    ADOStream	Automation	'Microsoft ActiveX Data Objects 2.8 Library'.Stream	
    XMLHTTP	Automation	'Microsoft XML, v3.0'.ServerXMLHTTP	
    Window	Dialog		
    UploadStatus	Text		150
    
    
    SOAP(URL : Text[150];LocalFile : Text[150];RemoteFile : Text[150];Parameter1 : Text[30];Parameter2 : Text[30];Action : Text[30];GetResult : Text[30]
    Window.OPEN('#1#########################################################',UploadStatus) ;
    UploadStatus := 'Uplading documents' ;
    
    Window.UPDATE ;
    CLEAR(XMLDocOut); 
    CLEAR(XMLEnv) ;
    CLEAR(XMLBody) ;
    CLEAR(XMLAct) ;
    CLEAR(XMLPar) ;
    
    CLEAR(ADOStream) ;
    CREATE(ADOStream) ;
    ADOStream.Type := 1 ;
    ADOStream.Open ;
    ADOStream.LoadFromFile(LocalFile) ;
    UploadStatus := 'Preparing documents' ;
    Window.UPDATE ;
    
    CREATE(XMLDocOut); 
    XMLDOMManagement.SetNormalCase;
    
    XMLProccesingInst := XMLDocOut.createProcessingInstruction('xml','version=''1.0'' encoding=''utf-8''');
    XMLDocOut.appendChild(XMLProccesingInst); 
    
    XMLEnv := XMLDocOut.createElement('soap:Envelope') ;
    XMLDocOut.appendChild(XMLEnv);
    XMLDOMManagement.AddAttribute(XMLEnv,'xmlns:soap','http://schemas.xmlsoap.org/soap/envelope/') ;
    XMLDOMManagement.AddAttribute(XMLEnv,'xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance') ;
    XMLDOMManagement.AddAttribute(XMLEnv,'xmlns:xsd','http://www.w3.org/2001/XMLSchema') ;
    
    XMLDomElement := XMLDocOut.documentElement ;
    XMLBody := XMLDocOut.createElement('soap:Body') ;
    XMLDomElement.appendChild(XMLBody) ;
    UploadStatus := 'Preparing document for sending' ;
    Window.UPDATE ;
    
    XMLAct :=  XMLDocOut.createElement(Action) ;
    XMLBody.appendChild(XMLAct) ;
    XMLDOMManagement.AddAttribute(XMLAct,'xmlns',URItemp) ;
    
    XMLPar := XMLDocOut.createNode(1,Parameter1,URItemp) ;
    Convert2binary(Parameter1) ;
    XMLAct.appendChild(XMLPar) ;
    
    XMLPar := XMLDocOut.createNode(1,Parameter2,URItemp) ;
    XMLPar.text := RemoteFile ;
    XMLAct.appendChild(XMLPar) ;
    UploadStatus := 'Sending document...' ;
    Window.UPDATE ;
    
    SendSOAP(URL,URItemp+Action,GetResult) ;
    Window.CLOSE ;
    
    
    
    Convert2binary(Par1 : Text[150])
    //tempXMLDoc	Automation	'Microsoft XML, v3.0'.DOMDocument	
    //tempXMLNode	Automation	'Microsoft XML, v3.0'.IXMLDOMNode	
    
    CLEAR(tempXMLDoc) ;
    CREATE(tempXMLDoc) ;
    tempXMLDoc.loadXML('<'+Par1+' />') ;
    
    tempXMLNode := tempXMLDoc.documentElement ;
    tempXMLNode.dataType('bin.base64') ;
    tempXMLNode.nodeTypedValue := ADOStream.Read(ADOStream.Size) ;
    XMLPar.dataType('bin.base64') ;
    XMLPar.nodeTypedValue := tempXMLNode.nodeTypedValue ;
    
    
    SendSOAP(SOAPURL : Text[150];SOAPAction : Text[150];SOAPResult : Text[150])
    CREATE(XMLHTTP) ;
    XMLHTTP.open('POST',SOAPURL,FALSE) ;
    XMLHTTP.setRequestHeader('SoapAction',SOAPAction) ;
    XMLHTTP.setRequestHeader('Content-Type', 'text/xml; charset=utf-8') ;
    
    XMLHTTP.send(XMLDocOut) ;
    IF NOT (XMLHTTP.statusText = 'OK') THEN ERROR('Error sending document!') ;
    XMLDocOut := XMLHTTP.responseXML ;
    XMLDomElement := XMLDocOut.documentElement;
    XMLEnv := XMLDomElement.selectSingleNode('.//'+SOAPResult);
    IF XMLEnv.text = 'true' THEN MESSAGE('Document sent!')
    ELSE ERROR('Document was NOT sent!\\Check your internet connection!') ;
    
  • Options
    snyktpsnyktp Member Posts: 75
    Thank you Malajlo,
    But I think it must be small think for this in xmlport..
    I want to put a jpg in a xml...'base64 encoded’ data in a xml fiedl


    Thank you again..
  • Options
    nunomaianunomaia Member Posts: 1,153
    Open codeunit 99008516 - BizTalk XML DOM Management there is a function AddPicture. This function will encode a picture as Base64
    Nuno Maia

    Freelance Dynamics AX
    Blog : http://axnmaia.wordpress.com/
  • Options
    snyktpsnyktp Member Posts: 75
    Thank you nunomaio...
Sign In or Register to comment.