cancel
Showing results for 
Search instead for 
Did you mean: 

Write - base64 decoded - binary content without encoding

louise
Champ in-the-making
Champ in-the-making
I've a small javascript "upload" webscript (alfresco version: 3.4.d) to receive and parse base64 encoded document content in an XML tag, like this:

<request>
  <officeName>office_0001</officeName>
  <worksheetId>worksheet_0001</worksheetId>
  <documentName>document_0001.txt</documentName>
  <documentMimetype>text/plain</documentMimetype>
  <documentContent>aGVsbG8gd29ybGQh</documentContent>
</request>

After parsing of documentContent XML tag, base64 decoder results a string with decoded binary data (contentData.lenght same as original binary length):

logger.log(serviceName+": decoding base64 data, size: "+documentContent.length);
               
var contentData = Base64x.decode(documentContent);

logger.log(serviceName+": base64 data decoded, size: "+contentData.length);


And next the problematic part; the contentData in newDocumentNode.content is bigger than contentData.length, looks like UTF-8 encoded (newDocumentNode.size not matched with contentData.length)…

var newDocumentNode = worksheetFolderNode.createFile(model.documentName);
if (newDocumentNode != null) {
  newDocumentNode.content=contentData;
  newDocumentNode.save();
  logger.log(serviceName+": new document size: "+newDocumentNode.size);
}

Runtime log:
Size of original data before base64 encode: 5921
Test with PHP's utf8_encode: UTF-8 size of binary data: 8870

18:29:17,503 User:admin DEBUG [repo.jscript.ScriptLogger] upload: decoding base64 data, size: 7896
18:29:17,536 User:admin DEBUG [repo.jscript.ScriptLogger] upload: base64 data decoded, size: 5921 (SAME AS ORIGINAL SIZE)
18:29:17,590 User:admin DEBUG [repo.jscript.ScriptLogger] upload: new document size: 8870 (LOOKS LIKE UTF-8 ENCODED SIZE)

How can i write node's content without encoding base64 decoded string?

Is it possible to use java-side base64 decoder from javascript webscipt? Somebody could post an example?
1 REPLY 1

sufo
Star Contributor
Star Contributor
Did you try to set the correct mimetype before you put the content into newDocumentNode? newDocumentNode.mimetype = xxx;