Reputation: 23816
I am writing base64
encoded value to zip file. Following code i am using for writing:
var base64Data = base64_encoded_value;
base64Data += base64Data.replace('+', ' ');
binaryData = new Buffer(base64Data, 'base64').toString('binary');
fs.writeFile('test.zip', binaryData, "binary", function (err) {
console.log(err); // writes out file without error
});
Its working and test.zip
file is creating, problem is then when i am extracting it, its giving me following error:
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of /home/user/Node/project/public/media/written/zip4045508057.zip or
/home/user/Node/project/public/media/written/zip4045508057.zip.zip, and cannot find /home/user/Node/project/public/media/written/zip4045508057.zip.ZIP, period.
Is there any way to do this???
Upvotes: 4
Views: 7288
Reputation: 1386
Alternative way to extract .zip file from a base64 string is to using npm package mws-extract-document
const mwsExtract = require('mws-extract-document');
const dist = './folder/to/document.zip';
const base64String = ''; //located at PdfDocument data response from MWS api.
// PROMISE
mwsExtract(base64String, dist)
.then((msg)=>{
// file saved. do something here...
console.log(msg);
})
.catch(err)=>{
console.log(err);
});
Upvotes: 0
Reputation: 341
You will have to convert base64 into utf8 format. Then you can use that converted data to write file.
Try using following function to convert base64 string into utf8
/**
* @param b64string {String}
* @returns {Buffer}
*/
function _decodeBase64ToUtf8(b64string) {
var buffer;
if (typeof Buffer.from === "function") {
// Node 5.10+
buffer = Buffer.from(b64string, 'base64');
} else {
// older Node versions
buffer = new Buffer(b64string, 'base64');
}
return buffer;
}
I have used this to create ZIP file using base64 data
Upvotes: 3