Как я могу перезаписать текстовый файл через javascript в браузере Edge? - PullRequest
0 голосов
/ 07 мая 2020

Я пытался перезаписать текстовый файл, который находится по локальному пути через javascript по краю (хром). Но не работает. Я хочу знать, поддерживает ли Edge (версия Chromium) создание текстового файла по локальному пути. Если возможно, как я могу это сделать?

1 Ответ

0 голосов
/ 08 мая 2020

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

Пожалуйста, проверьте следующий образец:

<input type="file" id="inputfile" /><br />
<input type="button" id="btn-dwn" value="Download" /><br />
<textarea id="text-val" rows="4"></textarea><br />

<script> 
    function newFile(data, fileName) {
        // download the content to a .txt file.
        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
            //IE11 support
            console.log("IE& Edge");
            // let blob = new Blob([data], { type: "text/html" });// text/plain;charset=utf-8
            let blob = new Blob([data], { type: "text/plain;charset=utf-8" });
            window.navigator.msSaveOrOpenBlob(blob, fileName);
        } else {// other browsers
            console.log("Other browsers");
            var bl = new Blob([data], { type: "text/plain;charset=utf-8" });
            var a = document.createElement("a");
            a.href = URL.createObjectURL(bl);
            a.download = fileName;
            a.hidden = true;
            document.body.appendChild(a);
            a.click();
        }
    };

    //using FileReader to read the .txt file content
    document.getElementById('inputfile').addEventListener('change', function () { 
        var fr = new FileReader();
        fr.onload = function () {
            document.getElementById('text-val').value = fr.result;
        } 
        fr.readAsText(this.files[0]);
    });

    //call the newFile function to download text file.
    document.getElementById("btn-dwn").addEventListener('click', function () {
        newFile(document.getElementById("text-val").value, "test.txt");
    }); 
</script>
...