Releases: Suvabrataroy/UploadLargeFileUsingJavascript
Releases · Suvabrataroy/UploadLargeFileUsingJavascript
Bug Fix
//Bug while calculating file byte now resolved
function UploadLargeFile(file, callback, PostURL, SucessFunc) {
var fileSize = file.size;
var chunkSize = 1 * 1024 * 1024; // bytes
var offset = 0;
var BOF = 0;
var self = this; // we need a reference to the current object
var FileReadInBlocks = null;
var readEventHandler = function(evt) {
    if (evt.target.error == null) {            
        callback(evt.target.result, BOF, function() {
            if (offset >= fileSize) {
				//FileReadInBlocks(offset, fileSize-offset, file)
                console.log("Done reading file"); 
                return;
            }
            FileReadInBlocks(offset, chunkSize, file)
			offset += chunkSize;
        }, PostURL);
        BOF = offset;
    } else {
        console.log("Read error: " + evt.target.error);
        return;
    }
    if (offset >= fileSize) {
        SucessFunc();
        console.log("Done reading file");
        //console.log(new Date());
        return;
    }
}
FileReadInBlocks = function(_offset, length, _file) {
    var r = new FileReader();
    var blob = _file.slice(_offset, length + _offset);
    console.log(_offset);
    r.onload = readEventHandler;
    r.readAsDataURL(blob);
}
// now let's start the read with the first block
FileReadInBlocks(offset, chunkSize, file);
offset += chunkSize;
}
function AsyncUpload(data, fileposition, seekNext, PostURL) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
seekNext();
}
};
xhttp.open("POST", PostURL, true);
xhttp.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhttp.send(JSON.stringify({
    FileData: data,
    OffSet: fileposition
}));
}