如何在html中选择文件并在javascript中管理它
我需要在html中选择一个.csv文件,并用javascript管理它(我需要将其转换为JSON),我做了一些事情,但效果不好 要选择html格式的文件,我执行了以下操作:如何在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"
<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)
,您将找到正确的属性。此外,您还有一条有趣的评论,导致出现错误。