如何仅从文本文件中发送文本

时间:2014-02-23 20:07:10

标签: javascript jquery html ajax

我需要做的是:

  • 让用户从他的光盘中选择txt文件

  • 从中获取文字,让我们说一个变量

  • 通过AJAX发送(变量值)

关于第一点我想知道我是否应该使用普通输入类型(比如我想通过POST发送文件)<input type="file">

对于第二点,我需要知道如何获取所选文件的名称,然后从中读取文本。另外我对javascript不太好,所以我真的不知道字符串可以存在多长时间(文件平均有大约15k行)

对于第三个,我不需要知道我是否可以将数据存储在变量或数组中。

提前致谢。

P.S。我猜javascript不是一种快速的语言,但是(取决于编辑器)它有时会在我的计算机上打开,就像我在前5或6行中拥有所有需要的数据一样。是否可以只从文件中读取前几行?

2 个答案:

答案 0 :(得分:0)

使用文件API可以像@dandavis和其他评论员提到的那样(并链接)获得你想要的东西,但是有一些事情需要考虑,即browser support。底线是File API目前是w3c的working draft。并且底线甚至是w3c 推荐并非所有浏览器都完全支持这些内容。

对您而言,“最佳”解决方案实际上归结为您希望支持的浏览器/版本。如果它是我自己的个人项目或“现代”网站/受众,我会使用File API。但如果这是针对需要最大浏览器支持的内容(对于旧浏览器),我目前不推荐使用File API。

所以说了这一切,这里是一个不涉及使用FIle API的建议解决方案。

  • 以表单形式提供输入类型文件,供用户指定文件。用户必须选择文件(javascript不能这样做)
  • 使用form.submit()或设置target属性以提交表单。有一个iframe trick用于提交表单而不刷新页面。
  • 使用选择的服务器端语言来响应文件信息(名称,内容等)。例如,在php中,您将使用$_FILES
  • 访问发布的文件
  • 然后您可以使用javascript来解析响应。通常,您将其作为json编码响应发送。然后你可以用javascript中的文件信息做任何你想做的事情。

答案 1 :(得分:0)

使用Chrome和Firefox,您可以阅读文本文件的内容,如下所示:

HTML:

<input type="file" id="in-file" />    

JavaScript with jQuery:

var fileInput = $('#in-file');

fileInput.change(function(e) {
    var reader = new FileReader();
    reader.onload = function(e) {
        console.log(reader.result);
    }
    reader.readAsText(fileInput[0].files[0]);   
});

IE不支持FileReader对象。