Прочитать текстовый файл и вернуть содержимое - PullRequest
0 голосов
/ 24 октября 2019

JavaScript для начинающих здесь. Я хотел бы написать базовую функцию, которая берет путь к локальному текстовому файлу и возвращает его содержимое. Мне известно, что этот вопрос задавался примерно 1000 раз, например здесь . Но каждый ответ отличается друг от друга, я пробовал несколько, и они, кажется, не работают. Немного погуглив, я смог найти следующее решение

function readTextFile(path) {
    var reader = new FileReader();
    reader.onload = function(event) {
        var contents = event.target.result;
        console.log("File contents: " + contents);
    };

    reader.onerror = function(event) {
        console.error("File could not be read! Code " + event.target.error.code);
    };

    var file = new File([path], { type: 'plain/text' });
    reader.readAsText(file);
    return contents
}

Однако по какой-то причине он выводит сам путь, а не его содержимое. Пожалуйста, предложите, как этот код можно исправить, укоротить, улучшить.

Я также пробовал извлечь, но получил печально известную ошибку запроса кросс-источника, которую я не мог понять, как ее легко решить.

РЕДАКТИРОВАТЬ :

Хорошо, я добавлю еще несколько строк, чтобы прояснить ситуацию

index.html:

<input type="file" id="jsonAddressInput" value="enter address here">

script.js

function myFunction() {
    var addressField = document.getElementById("jsonAddressInput");

    var addressText = addressField.value;
    console.log(addressText);

    var textContentsOfFile = readTextFile(addressText)
    //console.log(textContentsOfFile)
}

function readTextFile(path) {
    var reader = new FileReader();
    reader.onload = function(event) {
        var contents = event.target.result;
        console.log("File contents: " + contents);
    };

    reader.onerror = function(event) {
        console.error("File could not be read! Code " + event.target.error.code);
    };

    var file = new File([""], path, { type: 'plain/text' });
    reader.readAsText(file);
    return contents
}

Было упомянуто, что я могу использовать результаты для получения содержимого файла. Подскажите пожалуйста как исправить

1 Ответ

1 голос
/ 24 октября 2019

Вот пример, как читать локальный файл:

function readJson(blob) {
    var reader = new FileReader();
    reader.onload = function(event) {
        contents = event.target.result;
    };

    reader.onerror = function(event) {
        console.error("File could not be read! Code " + event.target.error.code);
    };

    var file = new File(blob, { type: 'plain/text' });
    reader.readAsText(file);
}

let contents

document.querySelector("input").addEventListener("change", (e) => {
  contents = readJson(e.target.files);
})

document.querySelector("button").addEventListener("click", (e) => {
  console.log(contents);
})
<input type="file">

<button>show contents</button>

Если вы хотите содержимое удаленного файла, используйте fetch

...