如何在html中选择文件并在javascript中管理它

如何在html中选择文件并在javascript中管理它,javascript,html,Javascript,Html,我需要在html中选择一个.csv文件,并用javascript管理它(我需要将其转换为JSON),我做了一些事情,但效果不好 要选择html格式的文件,我执行了以下操作: <input id="inputFile" accept=".csv" type="file"> <br> <br> <input value="Send" type="button"

我需要在html中选择一个.csv文件,并用javascript管理它(我需要将其转换为JSON),我做了一些事情,但效果不好

要选择html格式的文件,我执行了以下操作:

<input id="inputFile" accept=".csv" type="file"> <br>

<br>
<input value="Send" type="button" onclick="showFile()"> 
<label id="mylabel">
</label>

<script src="../javascript/parseFileScript.js"></script>
//take a string containing a csv
function csvJSON(csv){
    console.log(typeof csv)
    var lines=csv.split("\n");

    var result = [];

    // NOTE: If your columns contain commas in their values, you'll need
    // to deal with those before doing the next step
    // (you might convert them to &&& or something, then covert them back later)
    // jsfiddle showing the issue https://jsfiddle.net/
    var headers=lines[0].split(",");

    for(var i=1;i<lines.length;i++){

        var obj = {};
        var currentline=lines[i].split(",");

        for(var j=0;j<headers.length;j++){
            obj[headers[j]] = currentline[j];
        }

        result.push(obj);

    }

    //return result; //JavaScript object
    return JSON.stringify(result); //JSON
}

//load the selected file and convert in string
async function getCSV() {
    let file = document.getElementById('inputFile').files[0];
    console.log(typeof file)
    let text = await file.text();
    return text;
}

//put the body of the selected file in a label
function showFile() {
    let csv = getCSV();
    let json = csvJSON(csv);
    document.getElementById('mylabel').innerHTML = json;
}


为了管理它,我做了以下工作:

<input id="inputFile" accept=".csv" type="file"> <br>

<br>
<input value="Send" type="button" onclick="showFile()"> 
<label id="mylabel">
</label>

<script src="../javascript/parseFileScript.js"></script>
//take a string containing a csv
function csvJSON(csv){
    console.log(typeof csv)
    var lines=csv.split("\n");

    var result = [];

    // NOTE: If your columns contain commas in their values, you'll need
    // to deal with those before doing the next step
    // (you might convert them to &&& or something, then covert them back later)
    // jsfiddle showing the issue https://jsfiddle.net/
    var headers=lines[0].split(",");

    for(var i=1;i<lines.length;i++){

        var obj = {};
        var currentline=lines[i].split(",");

        for(var j=0;j<headers.length;j++){
            obj[headers[j]] = currentline[j];
        }

        result.push(obj);

    }

    //return result; //JavaScript object
    return JSON.stringify(result); //JSON
}

//load the selected file and convert in string
async function getCSV() {
    let file = document.getElementById('inputFile').files[0];
    console.log(typeof file)
    let text = await file.text();
    return text;
}

//put the body of the selected file in a label
function showFile() {
    let csv = getCSV();
    let json = csvJSON(csv);
    document.getElementById('mylabel').innerHTML = json;
}
//获取包含csv的字符串
函数csvJSON(csv){
console.log(csv类型)
变量行=csv.split(“\n”);
var结果=[];
//注意:如果列的值中包含逗号,则需要
//在进行下一步之前先处理这些问题
//(您可以将它们转换为&&&或其他形式,然后稍后再将其转换回)
//显示问题的jsfiddlehttps://jsfiddle.net/
var headers=行[0]。拆分(“”,“”);

for(var i=1;i是
字符串
原型的函数。正如您自己编写的,您的输入不是字符串。@Lain谢谢,但也可以帮助我解决这个问题^^^将
console.log(typeof csv)
更改为
console.log(csv)
您将找到正确的属性。另外,您有一个有趣的注释,它指向。是
字符串
原型的函数。正如您自己编写的,您的输入不是字符串。@Lain谢谢,但也可以帮我解决这个问题^^^^将
console.log(typeof csv)
更改为
console.log(csv)
,您将找到正确的属性。此外,您还有一条有趣的评论,导致出现错误。