用chrome读取文件

时间:2013-09-25 00:51:46

标签: javascript html google-chrome

我正在尝试编写一个java脚本来读取chrome中的文件,我正在使用chrome的javascript调试器。 这是脚本:

function myFunction()
{
alert("I am an alert box!");
var e ;
var contents;
var control = document.getElementById("myfile");
  files = control.files;
console.log("Filename: " + files[0].name);
var reader = new FileReader();
reader.readAsText(files[0]);

reader.onload = function (e) { 


    contents = e.target.result;

    };

console.log("File contents: " + contents);
console.log("I am an alert box!");console.log("I am an alert box!");



}





</script>

当我运行代码时,content变量是未定义的。大量的讨论已经进入了这个,但我还没有找到解决方案。我正在使用--allow-file-acess-from-files选项。 现在,以下代码以一种奇怪的方式工作:

<script>
function myFunction()
{
alert("I am an alert box!");
var e ;
var contents;
var control = document.getElementById("myfile");
  files = control.files;
console.log("Filename: " + files[0].name);
var reader = new FileReader();
reader.readAsText(files[0]);

reader.onload = function (e) {
    contents = e.target.result ;
    };
console.log(e.target.result);
console.log("I am an alert box!");console.log("I am an alert box!");
}
</script>

它抛出一个错误,即“Uncaught TypeError:无法读取未定义的属性'目标'” 但是,在监视表达式窗口中,以下变量显示正在读取该文件。

event.target.result:“固件文件 ↵:10000000782600204D4B0000B94B0000B94B000092 ↵:10001000B94B0000B94B0000B94B000000000000D4 ↵:10002000000000000000000000000000B94B0000CC ↵:10003000B94B000000000000B94B0000210B00008C ↵:10004000B94B0000B94B0000B94B0000B94B0000A0 ↵:10005000B94B0000B94B0000B94B0000B94B000090 ↵:10006000B94B0000B94B0000B94B0000B94B000080 ↵:10007000B94B0000B94B0000B94B0000B94B000070 ↵:10008000B94B0000B94B0000B94B0000B94B000060 和e.target.result和内容变量的输出相同。

为什么代码行为如此奇怪? 请帮助我。我对javascripting不是很熟练。

1 个答案:

答案 0 :(得分:1)

e.target将在您的第二个console.log上未定义到底部 - 只有一个在onload函数内,因此设置了e

第二个作用于您在顶部定义的var e ;,为空,因此e.target.result无效。

e:换句话说,删除此行,或将其移动到函数中:

bogus line