在html中读取上传的文本文件内容

IT技术 javascript html file file-upload
2021-02-01 01:14:29

我想在html中显示上传文件的内容,我可以上传一个文本文件。我的example.html:

<html xmlns="http://www.w3.org/1999/xhtml" >
<p>
Please specify a file, or a set of files:<br>
<input type="file" name="datafile" size="40">
</p>

<textarea id="2" name="y" style="width:400px;height:150px;"></textarea>
</html>

如何在如下所示的 textarea 中显示任何上传的文本文件的内容? 截屏

3个回答

我从谷歌来到这里,惊讶地发现没有工作示例。

您可以使用具有良好跨浏览器支持的FileReader API读取文件

const reader = new FileReader()
reader.onload = event => console.log(event.target.result) // desired file content
reader.onerror = error => reject(error)
reader.readAsText(file) // you could also read images and other binaries

请参阅下面的完整工作示例。

这太好了,谢谢。我正在尝试使用 php 将文件以及一些用户输入的数据上传到服务器。因此,用户选择一个包含一些数据的文件,然后写入一些内容(即时间、日期、序列号),然后单击上传,这是服务器上的一个文件。我认为您的回答将帮助我以另一种方式实施。
2021-03-25 01:14:29
> “一个文件连同一些用户输入的数据一起发送到服务器”——对于这个任务,使用多部分形式似乎更自然:stackoverflow.com/questions/1075513/...
2021-03-25 01:14:29

这是一种方法:

HTML

<tr>
    <td>Select a File to Load:</td>
    <td><input type="file" id="fileToLoad"></td>
    <td><button onclick="loadFileAsText()">Load Selected File</button><td>
</tr>

JavaScript

function loadFileAsText(){
  var fileToLoad = document.getElementById("fileToLoad").files[0];

  var fileReader = new FileReader();
  fileReader.onload = function(fileLoadedEvent){
      var textFromFileLoaded = fileLoadedEvent.target.result;
      document.getElementById("inputTextToSave").value = textFromFileLoaded;
  };

  fileReader.readAsText(fileToLoad, "UTF-8");
}
在 bacbone.js 应用程序中帮助了我
2021-03-21 01:14:29
我尝试了这个解决方案,但它无法编译并显示错误:property result does not exist on type EventTarget 注意:我正在使用typescript
2021-04-09 01:14:29
请注意,您的 html 中没有任何名为inputTextToSave 的元素
2021-04-11 01:14:29

试试这个。

HTML

<p>
Please specify a file, or a set of files:<br>
<input type="file" id="myFile" multiple size="50" onchange="myFunction()">
</p>

<textarea id="demo" style="width:400px;height:150px;"></textarea>

JS

function myFunction(){
    var x = document.getElementById("myFile");
    var txt = "";
    if ('files' in x) {
        if (x.files.length == 0) {
            txt = "Select one or more files.";
        } else {
            for (var i = 0; i < x.files.length; i++) {
                txt += (i+1) + ". file";
                var file = x.files[i];
                if ('name' in file) {
                    txt += "name: " + file.name + "";
                }
                if ('size' in file) {
                    txt += "size: " + file.size + " bytes ";
                }
            }
        }
    } 
    else {
        if (x.value == "") {
            txt += "Select one or more files.";
        } else {
            txt += "The files property is not supported by your browser!";
            txt  += "The path of the selected file: " + x.value; // If the browser does not support the files property, it will return the path of the selected file instead. 
        }
    }
    document.getElementById("demo").innerHTML = txt;
}

演示

输出不回答问题,它给出了文件类型和文件大小
2021-03-17 01:14:29
不回答试图阅读文件内容的问题。
2021-04-03 01:14:29
问题是读取文件内容而不是文件信息或文件大小..您的代码没有提供文件内容
2021-04-06 01:14:29
这有效但错误。它给出文件的属性而不是文件的内容(如果 file.txt 包含“2 3 4”它应该给出“2 3 4”)。
2021-04-07 01:14:29