Vue.js читает тип входного файла .txt [duplicate]

Перейти вверху и удалить оператор импорта, если он есть, и повторно импортировать класс. Но если это не так, сделайте чистую сборку. Вы используете Netbeans или Eclipse?

10
задан Gürkan Çatak 31 July 2015 в 13:00
поделиться

3 ответа

Вот один из способов:

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");
}
4
ответ дан EhsanT 22 August 2018 в 14:28
поделиться
  • 1
    Обратите внимание, что в вашем html у вас нет элемента с именем inputTextToSave . – EhsanT 14 November 2016 в 00:49
  • 2
    Помог мне в приложении backbone.js – Oldenborg 11 July 2017 в 21:58

Попробуйте это.

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;
}

Демо

2
ответ дан Shrinivas Pai 22 August 2018 в 14:28
поделиться
  • 1
    Это работает, но ошибочно. Он предоставляет свойство файла, не содержащего файл (если file.txt содержит «2 3 4», он должен указывать «2 3 4»). – Gürkan Çatak 31 July 2015 в 16:00

Я пришел сюда из Google и был удивлен, увидев рабочий пример.

Вы можете читать файлы с 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

См. полный рабочий пример ниже.

document.getElementById('input-file')
  .addEventListener('change', getFile)

function getFile(event) {
	const input = event.target
  if ('files' in input && input.files.length > 0) {
	  placeFileContent(
      document.getElementById('content-target'),
      input.files[0])
  }
}

function placeFileContent(target, file) {
	readFileContent(file).then(content => {
  	target.value = content
  }).catch(error => console.log(error))
}

function readFileContent(file) {
	const reader = new FileReader()
  return new Promise((resolve, reject) => {
    reader.onload = event => resolve(event.target.result)
    reader.onerror = error => reject(error)
    reader.readAsText(file)
  })
}
label {
  cursor: pointer;
}

textarea {
  width: 400px;
  height: 150px;
}
<div>
 <label for="input-file">Specify a file:</label><br>
 <input type="file" id="input-file">
</div>

<textarea id="content-target"></textarea>

7
ответ дан terales 22 August 2018 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: