From Ui base64 values I got for image files,my requirement is to convert that all to binary then write into the file.And if I open that file the image should open.
This code is for base64 to binary conversion using script and then write into the file:
<filter source="get-property('type')='Yes'" regex="true">
<then>
<property xmlns:ns2="http://org.apache.synapse/xsd"
name="transport.vfs.ReplyFileName"
expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.jpeg')"
scope="transport"
type="STRING"/>
<property name="fieldValue"
expression="//FieldValue"
scope="default"
type="STRING"/>
<script language="js">var t = mc.getProperty("fieldValue");
var input= t;
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
var keyStr = "ABCDEFGHIJKLMNOP" +
"QRSTUVWXYZabcdef" +
"ghijklmnopqrstuv" +
"wxyz0123456789+/" +
"=";
var output=t.length;
for( i=0;i < input.length;i++){
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
}
mc.setProperty("result",output);</script><log level="custom">
<property name="Before Payload" expression="get-property('result')"/>
</log>
<payloadFactory media-type="xml">
<format>
<ns:text xmlns:ns="http://ws.apache.org/commons/ns/payload">$1</ns:text>
</format>
<args>
<arg evaluator="xml" expression="get-property('output')"/>
</args>
</payloadFactory>
<property name="OUT_ONLY" value="true"/>
<property name="messageType"
value="text/plain; charset=windows-1252"
scope="axis2"/>
<send>
<endpoint name="FileEpr">
<address uri="vfs:file://D:/Documents/File/out"/>
</endpoint>
</send>
</then>
There is also some issue with script file,length function its not taking,but in the script if I declare some static value for those its taking. So,anybody can please help me to resolve this problems 1.Is there any way to directly convert base64 to Binary?? 2.This script as a stand alone working fine.how could I make it work into code??