Split an uploaded file into multiple chunks using javascript

后端 未结 2 989
一向
一向 2020-12-05 21:08

I\'m looking for a way to split up any text/data file on the front end in the browser before being uploaded as multiple files. My limit is 40KB per upload. So if a user uplo

2条回答
  •  [愿得一人]
    2020-12-05 21:34

    You could avoid having to base64 encode by using a FileReader and then sending as binary:

    const url = 'http://www.example.com/upload';
    
    document.getElementById('file-uploader').addEventListener('change', function(e) {
        const size = 40000;
        var reader = new FileReader();
        var buf;
        var file = document.getElementById('file-uploader').files[0];
        reader.onload = function(e) {
            buf = new Uint8Array(e.target.result);
            for (var i = 0;  i < buf.length; i += size) {
                var fd = new FormData();
                fd.append('fname', [file.name, i+1, 'of', buf.length].join('-'));
                fd.append('data', new Blob([buf.subarray(i, i + size)]));
                var oReq = new XMLHttpRequest();
                oReq.open("POST", url, true);
                oReq.onload = function (oEvent) {
                   // Uploaded.
                };
                oReq.send(fd);
            }
        }
          
        reader.readAsArrayBuffer(file);
    });

提交回复
热议问题