2016-01-25 5 views
0

Мое приложение построено с помощью заполнителя, где файл читается непосредственно при нажатии «load».nw.js: Как создать диалоговое окно файла, чтобы открыть файл?

<button id="loadbutton" type="button" class="btn btn-success" onclick="showTheFile()">Load</button></a> 

showthefile() делает некоторые вещи, а затем делает вызов ...

var keyMapLoc = '\\path\\to\\file.txt'; 
function readKeys(ffile) { 
// read the keyfile 
    var ffile = ffile || keyMapLoc; 
    return fs.readFileSync(ffile, 'utf8'); 
} 

Это читает файл в приложение, где она анализируется, иотта иотта.

I followed these instructions и использовано demo. Диалоговое окно файла появляется сразу после открытия приложения, которое я получаю.

<html> 
<body> 
<input style="display:none;" id="fileDialog" type="file" /> 
<script> 
    function chooseFile(name) { 
    var chooser = document.querySelector(name); 
    chooser.addEventListener("change", function(evt) { 
     console.log(this.value); 
    }, false); 

    chooser.click(); 
    } 
    chooseFile('#fileDialog'); 
</script> 
</body> 
</html> 

Однако, несмотря на то, я понимаю, как сделать файловое диалоговое поп, и я понимаю, как читать/разобрать файл, я с трудом работает это очень абстрактный пример в моей существующей nwjs приложения.

Основываясь на приведенном выше примере моего приложения, как мне следует смешивать демоверсию, чтобы кнопка «load» работала так, как ожидалось, для загрузки файла?

ответ

1

Поскольку вы не предоставили свой код, я сниму демоверсию. То, что вам нужно сделать , вызывает событие click элемента ввода файла, а затем по событию change, звоните readKeys().

<!DOCTYPE html> 
<html> 
<body> 
<input style="display:none;" id="fileDialog" type="file"/> 

<button id="loadButton" type="button" class="btn btn-success" 
     onclick="showTheFile()">Load</button> 

<script> 
    var fs = require('fs'); 
    var keyMapLoc = '\\path\\to\\file.txt'; 
    var chooser = document.querySelector("#fileDialog"); 

    // Set up the file chooser for the on change event 
    chooser.addEventListener("change", function(evt) { 
     // When we reach this point, it means the user has selected a file, 
     // so invoke readKeys(). 
     // this.value contains the path to the selected file 
     console.log(readKeys(this.value)); 
    }, false); 

    function showTheFile() { 
     // Trigger click event on the chooser, this will bring up the 
     // dialog 
     chooser.click() 
    } 

    function readKeys(ffile) { 
     var ffile = ffile || keyMapLoc; 
     return fs.readFileSync(ffile, 'utf8'); 
    } 
</script> 
</body> 
</html>