使用Javascript,用户可以选择一个文本文件,然后从中读取内容

时间:2019-03-20 14:48:48

标签: javascript html file text

我正在尝试从文本文件输入基本文件。我在网上查看了各种帖子,并找到了一些解决方案,但是,他们的解决方案向我发出了不同的警报。我希望我的警报像他们一样在其中包含文件内容,但是我的文件类型重复了。

我不了解JQuery,所以我希望使用javascript中的答案,否则我将难以理解。

    function fileSelected(el){
    if(el.files && el.files[0]){
        var f = el.files[0]; 

        if(f){
            var FR = new FileReader();
            FR.onload = function(e) {
                var contents = e.target.result;
                console.log(contents.substr(1, contents.indexOf("n")));
                alert( "Got the file.\n" 
                    +"name: " + f.name + "\n"
                    +"type: " + f.type + "\n"
                    +"size: " + f.size + " bytes \n"
                    + "starts with: " + contents.substr(1, contents.indexOf("n"))
                );
            };       
            FR.readAsDataURL( el.files[0]);
        }

    }   
}
<html>
    <head>
        <title>Import File Attempt</title>
        <link rel="stylesheet" type="text/css" href ="style.css">
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <input type="file" id="fileChoice" onchange="fileSelected(this)">
    </body>
</html>

这是我确实收到的警报: Screenshot of my alert

这是我想要的警报: Alert I wanted

编辑: 可以考虑添加文本文件的屏幕快照,以帮助: My text file

2 个答案:

答案 0 :(得分:0)

我不知道我是否很好地理解了这个问题。您要读取文件内容吗? 对于.txt文件:

console.log(contents.substr(23,)); 

切断:data:text / plain; base64,并将显示以Base64编码的文件的内容

还要检查:

var str = "data:text/plain;base64,VGVzdG93YSB0cmXFm8SHCg==";
console.log (str.replace(/^\S+64,/, ''));

它也适用于txt以外的其他文件 当然,要适应您的需求。

答案 1 :(得分:0)

如果它是 text 文件,建议您使用FileReader.readAsText()进行阅读:

function loadfile(event){
  var fr=new FileReader();
  fr.onload=function(){
    txt.value=fr.result;
  };
  fr.readAsText(event.target.files[0]);
}
textarea{
  width: 95%;
  height: 300px;
}
<input type="file" accept="text" onchange="loadfile(event)"><br>
<textarea id="txt"></textarea>

({name-type-size已经很好用了,所以我把它们排除在外了