2016-03-01 43 views
0

好吧,所以我编写了这个程序,以避免手动重新格式化几个> 6000条目csv文件。它在完整文件的第一次运行时冻结,然后运行正常,当我给它一个1000条目块时,我在我的下载文件夹中有1000个文件。现在一次下载量不会超过51个。其余的都转换为我的XML格式,但不会自动下载。试图创建和下载数以千计的文件现在不工作

<script src="./papaparse.min.js"></script> 
<script src="./jquery-2.2.1.min.js"></script> 
<script> 
    var data; 
    var j = 1001; 
    function handleFileSelect(evt) { 
    var file = evt.target.files[0]; 

    Papa.parse(file, { 
     header: true, 
     dynamicTyping: false, 
//  preview: 5, 
     step: function(results, parser) { 
     j++ 
//  console.log("Row data:", results.data); 
//  console.log("Row errors:", results.errors); 
//  $("#test").text(results.data["0"]["correct_answer"]); 

var dataArray = [j, 
        results.data["0"]["question_id"], 
        results.data["0"]["node_id"], 
        results.data["0"]["part_text"], 
        results.data["0"]["distractor_1"], 
        results.data["0"]["distractor_2"], 
        results.data["0"]["distractor_3"], 
        results.data["0"]["correct_answer"], 
        results.data["0"]["explanation"]]; 

dataArray = HTMLGunkCleanse(dataArray); 

XMLWriter(dataArray[0], 
      dataArray[1], 
      dataArray[2], 
      dataArray[3], 
      dataArray[4], 
      dataArray[5], 
      dataArray[6], 
      dataArray[7], 
      dataArray[8]); 


     }//end of the line for stuff to do with each iteration of data 

     }) 
    }; 

function HTMLGunkCleanse(dataArray){ 
var regex = /<[^>]*>/g; 
for (i = 3;i<8;i++){ 
dataArray[i] = dataArray[i].replace("<p>", "\r\n").replace("</p>", "").trim(); 
var check = dataArray[i]; 
dataArray[i] = dataArray[i].replace(regex, "").replace("\\s+", "").trim(); 
if (check != dataArray[i]){ 
console.log(check); 
console.log(dataArray[i]); // shows any differences that may have occured 
    } 
} 

return dataArray 
} 

function XMLWriter(fileName, qID, nodeID, question, d1, d2, d3, correct, feedback){ 


setTimeout(function(){console.log("waiting");},1) 

//create long ugly string that looks good in xml 



var blob = new Blob([doc.toString()], { 
type: "text/plain;charset=utf-8" 
}); 

var url = URL.createObjectURL(blob); 

var a = document.createElement('a'); 
a.download = "cfal_question_00006_" + fileName + ".dita"; 
a.href = url; 
a.textContent = "Download latest"; 
a.click(); 
//if the click() function dosen't work you can try using onclick() fucntion like this 
//a.onclick(); 


document.getElementById('test').appendChild(a); 
} 


    $(document).ready(function(){ 
     $("#csv-file").change(handleFileSelect); 


    }); 
</script> 
<input type="file" id="csv-file" name="files"/> 
<div id="test"> 

</div> 

在对问题的回答中,我认识到了它的丑陋。我已经采取了一个JavaScript类,不要在网上一些东西,所以我有点新鲜。任何建议,为什么它工作正常,现在不工作?我使用谷歌浏览器来运行它。

+0

我仍然不知道为什么它有一次工作,但我切换到使用[JSZip](https://stuk.github.io/jszip/)和它的伟大工作。 – JOxborrow

回答

0

在函数'HTMLGunkCleanse'中,返回的dataArray不以';'结尾,也许这就是问题所在?