使用js codeigniter读取表单中的文件



我需要创建一个具有两个文本区域和一个文件输入的表单,该表单上载两行中有两个数字的txt/csv文件(1行-1个数字(,并使用codeigniter和Javascript用这两个数字弹出2个文本区域。感谢的帮助

file:
59.8
42.8
55.8
51.1

html

<input type="file" id="id">
<br>
<textarea id="result1" cols="50"></textarea>
<textarea id="result2" cols="50"></textarea>
<textarea id="result3" cols="50"></textarea>
<textarea id="result4" cols="50"></textarea>

如果有1个文本区域打印结果,但每一行都需要在一个文本区域中打印,并且不起作用,那么这就是js

$("#id").on('change', function(event){
event.preventDefault();

var selectedFile = event.target.files[0];
var reader = new FileReader();

var result = document.getElementById("param3");

reader.onload = function(event) {
result.innerHTML = event.target.result;
};

reader.readAsText(selectedFile);
});

要实现这一点,可以使用split()将从中的文本文件读取的值转换为数组,每行文本有一个元素。

然后,您可以循环遍历该数组,并在每个textarea中设置值。试试这个:

<input type="file" id="id"><br />
<textarea class="result" id="result1" cols="50"></textarea>
<textarea class="result" id="result2" cols="50"></textarea>
<textarea class="result" id="result3" cols="50"></textarea>
<textarea class="result" id="result4" cols="50"></textarea>
let $results = $('.result');
$("#id").on('change', e => {
e.preventDefault();
var reader = new FileReader();
reader.onload = e => {
e.target.result.split(/rn/).forEach((text, i) => {
$results.eq(i).val(text);
});
};
reader.readAsText(e.target.files[0]);
});

请注意,我将相同的class属性应用于textarea元素,以使逻辑更加简单。一般来说,增量id属性是一种反模式,应尽可能避免。

下面是jsFiddle中的一个工作示例(因为SO片段是沙盒的,不能使用FileReader(。您需要自己创建一个文本文件才能看到它的运行。

最新更新