JavaScript - 从文件中读取URL并将其保存为数组中的元素

时间:2015-11-11 16:48:27

标签: javascript arrays string file filereader

我的javascript技巧非常少,我想将文件的行作为String参数传递给预先编写的函数。基本上我想要做的是读取这种格式的文件,每个网址都在自己的行上:

www.url1.com www.url2.com

......等等

如何读取本地文件并将每一行保存到String数组?

非常感谢,如果有任何不清楚的地方,请告诉我

2 个答案:

答案 0 :(得分:0)

查看HTML5文件API。

有关示例,请参阅此博文:http://blog.teamtreehouse.com/reading-files-using-the-html5-filereader-api

虽然有限制,但必须通过

使用
<input type="file">

因此,在用户不知情的情况下,您不能只读取任意文件。

答案 1 :(得分:0)

您可以通过查看FileListFileFileReader网址API来执行此操作。请注意,您的浏览器可能不支持这些API,但大多数现代浏览器应该。您可以通过在window对象中查找其属性来检查它们的存在。

我在下面添加了带有注释的示例代码。

HTML:

<input id="f" type="file">

JavaScript的:

// This event listener is triggered when you open a file with the input button.
document.getElementById('f').addEventListener('change', function(event) {
  // Get File from FileList.
  // Documentation: https://developer.mozilla.org/en-US/docs/Web/API/FileList
  var f = this.files[0]; // event.target.files[0] works too

  // Need an instance of this API for asynchronous file I/O.
  var fr = new FileReader();

  // First create a function to handle the "onload" event.
  fr.onload = function(event) {
    // FileReader.result holds file contents
    // Documentation: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result
    var textInFile = this.result; // event.target.result works too
    // String.prototype.split with newline character argument
    var urls = textInFile.split('\n');
    console.log(urls);
  }

  // This performs asynchronous I/O and eventually triggers the "onload" event.
  // Default encoding is UTF-8.
  // Documentation: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsText
  fr.readAsText(f);
});