Updated Text Upload
Text Upload Description
HTML
<input type="file" id="files" name="file" />
<span class="readBytesButtons">
<button style="margin-left:20px;">Show file</button>
</span>
<pre id="finalOutput">
</pre>
JavaScript
function readBlob(opt_startByte, opt_stopByte) {
var files = document.getElementById('files').files;
var arr = [];
var file = files[0];
var start = parseInt(opt_startByte) || 0;
var stop = parseInt(opt_stopByte) || file.size - 1;
var reader = new FileReader();
// If we use onloadend, we need to check the readyState.
reader.onloadend = function (evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
var newLineVar = "\r\n";
var textInFile = evt.target.result;
var textSplitted = textInFile.split(newLineVar);
// console.log("[Initial] textSplitted ==> ", textSplitted.slice());
// Reversing array so that looping reverse results in correct order.
var reverseLoopingArr = textSplitted.reverse().slice();
// console.log("[Spaces removed] reverseLoopingArr ==> ", reverseLoopingArr.slice());
var i = reverseLoopingArr.length;
var angularBracketRegex = new RegExp("(^<[0-9a-zA-Z. ]*>$)");
while (i--) {
// Breaking loop if regex matches.
if( angularBracketRegex.test(reverseLoopingArr[i].replace(/\r/g, "")) ) {
break;
} else {
// Removing array values till our first regex matches.
reverseLoopingArr.splice(i, 1);
// Breaking loop if regex matches next value which is at one index less (due to reverse looping).
if(angularBracketRegex.test(reverseLoopingArr[i - 1].replace(/\r/g, ""))) {
break;
}
}
}
// Reversing array to correct order chaged by previous reverse.
textSplitted = reverseLoopingArr.reverse().slice();
// console.log("3. textSplitted ==> ", textSplitted.slice());
var finalObj = {};
var totalLength = textSplitted.length;
var currentQuestionId;
for (var i = 0; i < totalLength; i ++) {
var fieldText = textSplitted[i].replace(/</g, "").replace(/>/g, "").replace(/\r/g, "");
var isValueId = JSON.parse(JSON.stringify( angularBracketRegex.test(textSplitted[i].replace(/\r/g, "")) ));
if(typeof currentQuestionId...