Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅发送文本文件中的文本_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 如何仅发送文本文件中的文本

Javascript 如何仅发送文本文件中的文本,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我需要做的是: 让用户从光盘中选择txt文件 从中获取文本,比如一个变量 通过AJAX发送它(变量值) 对于第一点,我想知道我是否应该使用普通输入类型(例如,如果我想通过POST发送文件) 对于第二点,我需要知道如何获得用户选择的文件名,然后从中读取文本。另外,我不擅长javascript,所以我真的不知道字符串可以有多长(文件平均大约有15k行) 对于第三种情况,我不需要知道是否可以将数据存储在变量或数组中 提前谢谢 另外,我想javascript不是一种快速的语言,但是(取决于编辑器),

我需要做的是:

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

  • 从中获取文本,比如一个变量

  • 通过AJAX发送它(变量值)

对于第一点,我想知道我是否应该使用普通输入类型(例如,如果我想通过POST发送文件)

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

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

提前谢谢


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

> P>可以使用文件API作为@ DANDAVIS和其他评论员提到(并且链接),但是对于该解决方案有一些事情要考虑。底线是文件API目前是w3c的一部分。底线是,即使是w3c推荐的东西,也并非所有浏览器都完全支持

什么样的解决方案对您来说是“最佳”的,归根结底就是您希望支持什么浏览器/版本。如果它是我自己的个人项目,或者是一个“现代”网站/观众,我会使用文件API。但是,如果这是为了需要最大限度的浏览器支持(对于较旧的浏览器),我目前不建议使用文件API

说到这里,这里有一个建议的解决方案,它不涉及使用文件API

  • 在表单中提供输入类型文件,供用户指定文件。用户必须选择文件(javascript不能这样做)
  • 使用
    form.submit()
    或设置
    target
    属性来提交表单。没有刷新页面就可以提交表单
  • 使用选择的服务器端语言响应文件信息(名称、内容等)。例如,在php中,您可以使用
    $\u文件访问发布的文件
  • 然后可以使用javascript解析响应。通常,您会将其作为json编码的响应发送。然后,您可以使用javascript中的文件信息执行任何操作
使用Chrome和Firefox,您可以读取如下文本文件的内容:

HTML:

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

IE不支持FileReader对象。

我认为您的第一点不是100%正确。()我必须访问javascript中的文件才能通过$.post发送,不是吗?有趣的是,你说你必须使用ajax,但JS无法将文件内容作为字符串传递给ajax…html5规范可以访问它,是的。但是,用户必须指定一个文件,js不能在没有用户交互的情况下在用户的计算机上查找文件。第二,在html5规范之外,js无权访问文件内容。@Fiodor根据浏览器支持的需要,即使使用ajax(使用文件api),也可以在不刷新页面的情况下提交文件。还有一个
iframe
技巧可以提供更多的浏览器支持。更多细节。哪种解决方案(包括文件api解决方案)对您来说是“最佳”的,这取决于您希望支持的浏览器/版本。HTML5 Rocks提供了一个关于从磁盘读取文件的教程()。re:ps:当然,只需将“file.slice(0,1024)”调用传递给FileReader(),而不只是“file”要获取文件的第一个KB,而不将整个内容读入RAM。另外,file.name,从您提供给FileReader()的同一个文件中,具有文件名。。。
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]);   
});