Home Reference Source

src/utils/BlobHelper.js

/**
 @author: Hans van den Akker (mysim1)
 @license NPOSL-3.0
 @copyright Bizboard, 2015

 */

/**
 * Helper class for converting base64 string data to a HTML5 Blob object.
 **/
export class BlobHelper {

    /**
     * Convert base64 string data to a HTML5 Blob object.
     * @param {String} b64Data Base64 data to convert to Blob
     * @param {String} contentType Content type
     * @param {Number} sliceSize How large the chunks are in which we process the data.
     * @returns {Blob} Blob of raw data.
     */
    static base64toBlob(b64Data, contentType, sliceSize) {
        contentType = contentType || '';
        sliceSize = sliceSize || 512;

        let byteCharacters = atob(b64Data);
        let byteCharLength = byteCharacters.length;
        let byteArrays = [];

        for (var offset = 0; offset < byteCharLength; offset += sliceSize) {
            let slice = byteCharacters.slice(offset, offset + sliceSize);
            let sliceLength = slice.length;
            let byteNumbers = new Array(sliceLength);
            for (var i = 0; i < sliceLength; i++) {
                byteNumbers[i] = slice.charCodeAt(i);
            }

            var byteArray = new Uint8Array(byteNumbers);

            byteArrays.push(byteArray);
        }

        var blob = new Blob(byteArrays, {type: contentType});
        return blob;
    }
}