【问题标题】:How to keep newline characters when I import a javascript file with FileReader?使用 FileReader 导入 javascript 文件时如何保留换行符?
【发布时间】:2013-09-19 14:53:15
【问题描述】:

我想知道如何使用 FileReader 对象检索保留特殊字符的文件的内容。

<form enctype="multipart/form-data">
    <input type="file" id="file" name="file">
</form>
<script>
    $('#file').change(function () {
        var file = document.getElementById('file').files[0];

        var reader = new FileReader();

        reader.onload = function (event) {
            var file_content = event.target.result;
            console.log(file_content);
        }

        reader.readAsBinaryString(file);
    }
</script>

这段代码打印

"line1line2"

除了我的文件内容是

line1
line2

我怎样才能得到?

line1\nline2

我尝试了 readAsBinaryString 和 readAsText 方法,但没有成功。难道我做错了什么 ? 谢谢

FileReader doc

编辑:

JSfiddle 上的一个例子http://jsfiddle.net/yTgp7/

该问题仅存在于 mac Os X 上的 Firefox 上

【问题讨论】:

  • 你在哪里输出你的内容 - 只是为了控制台,如果是的话,你使用的是哪个浏览器?我在 Windows(\r\n 行尾)和 Unix(\n)机器上都试过这个,并且文件被正确读取。
  • @AdrianWragg 我在 Mac OS X 上使用 Firefox 23.0.1。我会尝试其他浏览器
  • 这里有一个 jsfiddle jsfiddle.net/yTgp7
  • 抛出一个带有换行符的警报(实际上是双换行符)。 Chrome 29,Windows 8。
  • 我的测试表明该错误仅出现在 OS X 上的 Firefox 上

标签: javascript html filereader


【解决方案1】:

这是一个 Firefox 错误,其文本文件仅包含 'CR' 作为行尾。

这与 MacOSX 无关,而是与 Firefox 有关。如果您的文件仅包含 'CR' 而不是 'LF 或 'CR/LF',则在 Windows 下会得到相同的结果。

您必须将出现的“CR”替换为“LF”(或“CR/LF”):

    alert(event.target.result.replace(/\r/g, "\n"));

这是您的 jsFiddle 的工作版本:http://jsfiddle.net/Y56Tq/3/

【讨论】:

猜你喜欢
  • 2014-10-17
  • 1970-01-01
  • 2020-12-29
  • 2012-04-01
  • 2018-06-25
  • 2023-03-19
  • 2018-05-10
  • 2016-05-21
  • 1970-01-01
相关资源
最近更新 更多