【发布时间】:2019-03-20 14:48:47
【问题描述】:
我正在尝试从文本文件进行基本文件输入。我在网上查看了各种帖子并获得了一些解决方案,但是,他们的解决方案向我返回了不同的警报。我希望我的警报像他们一样在其中包含文件的内容,但是我的文件类型重复。
我不懂 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
【问题讨论】:
-
请注意,字符串中的字符是从
0开始编号的,因此substr(1,...)调用会为您获取从字符串的第二个字符开始的字符串。这就是它变成ata:...的方式 - 最初数据 URL 以data:...开头。 -
附注:幸运的是,文本文件的数据 URL 以
data:text/plai-n 开头,因此代码确实可以与 @987654331 一起使用@,因为它会查找字母“n”并找到一个。但是,如果您的意思是查找换行符,则应该是indexOf('\n'),并且还要注意,如果文本文件中有换行符,它只会显示正确的结果。
标签: javascript html file text