UNPKG

js-base64-file

Version:

load fetch convert and save local and remote files and images to base64 in js

184 lines (109 loc) 4.99 kB
# Base64 File loading, converting and saving for node.js This is an ideal way to load and convert local and remote files to base64 either for use as a string or to save on disk. ***This works with all file types!*** install ` npm i js-base64-file ` ---- # Class Methods |method |params |description| |------ |------ |-----------| |load |path,fileName,callback |loads a local file and converts it to base64. ***note : path should always end with a slash*** | |loadSync |path,fileName |same as load, but it returns the base64 string instead of passing it to a callback. This could be slow on really large files. | |loadRemote |url,fileName,[`node-fetch` options](https://github.com/node-fetch/node-fetch#options)|loads a remote file and converts it to base64. This defaults to a simple `GET` request, but allows the full options from node-fetch for any type of request even with payloads| |save |data,path,fileName,callback|saves the data to the specified path and filename async callback| |saveSync |data,path,fileName |saves the data to the specified path and filename sync| ## Class Instance |callback|params|description| |--------|------|-----------| |load | err, base64Data |gives you the base64 encoded file data| |save | err, data |will pass any errors back it is unlikely there will ever be data| ---- # Testing & Coverage We have 98% coverage with the ***amazing*** [`C8` coverage tool](https://github.com/bcoe/c8). The only things not covered are empty default param functions. You can see the coverage details in the `./coverage/index.html` file. We use the [`vanilla-test testing module`](https://github.com/RIAEvangelist/vanilla-test) for super light and fast testing, and have integrated with Travis CI. You can run the tests and explore the coverage yourself by cloning the repo and running `npm test`. It will automatically set everything up and run coverage for you. # Examples You can look at and run the files in the `./example` dir and run them with `node ./example/{example}.js` Below are some quick copy paste examples for you. ----- ## LoadSync ```javascript import {Base64File} from 'js-base64-file'; const image=new Base64File; const file='test.png'; const path='./'; //this will load and convert if needed synchriouniously const data=image.loadSync(path,file); console.log(` SYNC: you could send this image via ws or http to the browser or save it to disk now : ${data.slice(0,50)} ... ${data.slice(-50)} `); ``` ## Load Async callback ```javascript import {Base64File} from 'js-base64-file'; const image=new Base64File; const file='test.png'; const path='./'; //this will load and convert if needed synchriouniously image.load(path,file,asycHandler); function asycHandler(err,data){ if(err){ console.trace(err); } console.log(` ASYNC: you could send this image via ws or http to the browser or save it to disk now : ${data.slice(0,50)} ... ${data.slice(-50)} `); } ``` ## Load Remote Await ```javascript import {Base64File} from 'js-base64-file'; const image=new Base64File; const remoteURL='https://octodex.github.com/images/'; const remoteFile='megacat-2.png'; const data=await image.loadRemote(remoteURL,remoteFile); console.log(` REMOTE: you could send this image via ws or http to the browser or save it to disk now : ${data.slice(0,50)} ... ${data.slice(-50)} `); ``` ## SaveSync ```javascript import {Base64File} from '../index.js'; import {existsSync} from 'fs'; const image=new Base64File; const remoteURL='https://octodex.github.com/images/'; const remoteFile='megacat-2.png'; const localPath='./'; //loading an image const data=await image.loadRemote(remoteURL,remoteFile); //saving the image image.saveSync(data,localPath,remoteFile); console.log(existsSync(localPath+remoteFile)); ``` ## Save Async Callback ```javascript import {Base64File} from 'js-base64-file'; import {existsSync} from 'fs'; const image=new Base64File; const file='test.png'; const path='./'; const copyAsyncFile=`copy-async-${file}`; //load a file const data=image.loadSync(path,file); //save the file image.save( data, path, copyAsyncFile, function(err,data){ if (err||!existsSync(`${path}${copyAsyncFile}`)){ test.fail(); } console.log(existsSync(path+copyAsyncFile)); //call next test here } ); ``` It's that simple! And it will work with any file type!