Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Re: decoding base64 data on client/browser? >Thread Next - Re: decoding base64 data on client/browser? Re: decoding base64 data on client/browser?To: NULL Date: 3/3/2006 6:37:00 AM Joe,
First, THANK YOU for replying. Yes, my xml includes the dt:dt="bin.base64".
Here is one of my XML response files:
<?xml version="1.0"?>
<get_documents_response xmlns:dt="urn:schemas-microsoft-com:datatypes">
<document>
<id>239</id>
<success>1</success>
<filename>file1infolder1.txt</filename>
<filedata
dt:dt="bin.base64">aSdtIGEgZmlsZQ0KDQppJ20gYW4gZWRpdGVkIGZpbGUu</filedata>
</document>
</get_documents_response>
Is it not possible to do this decoding on the client side maybe (I REALLY
hope that isn't the problem)? Your routines, Joe... I saw them (or ones very
similar) when I was researching this problem, and they were one of my guides
for getting at least to where I am.
Thanks again, Joe and all.
Brandon
"Joe Fawcett" wrote:
> "Brandon" <Brandon@d...> wrote in message
> news:4FF749E8-874D-43AA-8143-456AFB5804D5@m......
> > My browser app sends a request to the server for a binary file. The
> > server
> > receives the request, converts the file to base64, packages it up in XML,
> > and
> > returns it to the client/browser.
> >
> > I can parse the returned XML just fine -- and find the base64 data -- but
> > for the life of me cannot get it decoded back to it's original format.
> > The
> > script below gets the filedata (using "nodeTypedValue") and saves it, but
> > it's still the base64 representation of the file.
> >
> > I've tried a million different things, and have searched all over the web
> > and newsgroups, and I just can't seem to find a combination that gets me
> > the
> > original unencoded/decoded filedata.
> >
> > Two other notes:
> > 1. On the server side, I set the dataType = "bin.base64"
> > 2. When it's back here on the client, if I alert() out the dataType for
> > the
> > node, it's null. I thought that was interesting.
> >
> > Here is my client/browser JavaScript:
> > var getdocs_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
> > var getdocs_xmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
> > getdocs_xmldoc.loadXML(reqxml);
> > getdocs_xmlhttp.open("POST", "http://myserver/getbinfile.asp", false);
> > getdocs_xmlhttp.send(getdocs_xmldoc);
> >
> > getdocs_xmldoc.loadXML(getdocs_xmlhttp.responseText);
> > //getdocs_xmldoc.save(folderpath + "download.xml");
> > var root = getdocs_xmldoc.documentElement;
> > var inodelist = root.childNodes;
> >
> > ...
> > parsing through for other data as well (i.e. filename)
> > ...
> > if( nitem.nodeName == "filedata" )
> > {
> > var objStream = new ActiveXObject("ADODB.Stream")
> > objStream.Type = 1;
> > objStream.Open();
> > objStream.Write( nitem.childNodes.item(0).nodeTypedValue );
> > objStream.SaveToFile( folderpath + tfilename, (1 & 2) );
> > objStream.Close();
> > }
> >
> > ANY help would be MUCH appreciated. Thank you all!
> >
> > -b
> >
> >
> Not sure how you're creating the node which holds the binary data but it
> should have dt:dt="bin.base64" as an attribute.
>
> Here are two scripts, the first saves a Word doc within a base64 node, the
> second recovers it:
>
> //BinaryToXml.js
> var WORD_PATH = "C:\\Scripts\\JS\\BinaryXml\\hello1.doc";
> var XML_PATH = "C:\\Scripts\\JS\\BinaryXml\\word.xml"
>
> function main()
> {
> var oDoc = new ActiveXObject("MSXML2.DOMDocument.4.0");
> oDoc.async = false;
> var oStream = new ActiveXObject("ADODB.Stream");
> oStream.type = 1; //Binary
> oStream.open();
> oStream.loadFromFile(WORD_PATH);
> var oNode = oDoc.createProcessingInstruction("xml", "version='1.0'
> encoding='utf-8'")
> oDoc.insertBefore(oNode, oDoc.childNodes[0]);
> var oRoot = oDoc.createElement("Root")
> oDoc.documentElement = oRoot;
> //Following line is not strictly necessary
> oRoot.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes");
> oNode = oRoot.appendChild(oDoc.createElement("wordDoc"));
> oNode.dataType = "bin.base64";
> oNode.nodeTypedValue = oStream.read();
> oStream.close();
> oDoc.save(XML_PATH);
> WScript.echo(oDoc.url);
> }
>
> main();
>
>
> ************************
>
> //XmlToBinary.js
> var WORD_PATH = "hello2.doc";
> var XML_PATH = "word.xml"
>
> function main()
> {
> var oDoc = new ActiveXObject("MSXML2.DOMDocument.4.0");
> oDoc.async = false;
> oDoc.load(XML_PATH);
> var oStream = new ActiveXObject("ADODB.Stream");
> oStream.type = 1; //Binary
> oStream.open();
> oStream.write(oDoc.documentElement.selectSingleNode("wordDoc").nodeTypedValue);
> oStream.savetoFile(WORD_PATH);
> oStream.close();
> }
>
> main();
>
>
>
> --
>
> Joe Fawcett - XML MVP
>
> https://mvp.support.microsoft.com/profile=8AA9D5F5-E1C2-44C7-BCE8-8741D22D17A5
>
>
>
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
