通过HTTP传输文件的最有效方法是什么?

时间:2016-07-21 10:59:48

标签: javascript base64 filereader binary-data

我编写了一个必须将文件传输到REST Web服务的客户端。

我从输入控件中获取File对象,然后使用FileReader对象将其转换为base64(String)。我注意到base64字符串的重量是原始文件大小的30-40%。 如果我将二进制大小的字符串转换成字面上爆炸,那么如果有一种更有效的方法来转换字符串此文件并通过HTTP发送,我就会徘徊。

function toBase64() {    
    var file    = document.querySelector('#base64').files[0];
    var reader  = new FileReader();

    reader.addEventListener("load", function () {               
            var bin = base64toBin(reader.result);
    var base64 = reader.result;
    console.log(bin, base64);
    });

    if (file) {
        reader.readAsDataURL(file);
    }
}

function base64toBin(data) {
        var binArray = []
        var datEncode = "";

        for (let i=0; i < data.length; i++) {
            binArray.push(data[i].charCodeAt(0).toString(2)); 
        } 
        for (let j=0; j < binArray.length; j++) {
            var pad = padding_left(binArray[j], '0', 8);
            datEncode += pad + ' '; 
        }
        function padding_left(s, c, n) { if (! s || ! c || s.length >= n) {
            return s;
        }
        var max = (n - s.length)/c.length;
        for (var i = 0; i < max; i++) {
            s = c + s; } return s;
        }
        return binArray;
    }

这是一个poc: jsfiddle

0 个答案:

没有答案