Диалог открытия файла без input
- function open(callback) {
- var input = document.createElement("input");
- input.style.visibility = "hidden";
- input.setAttribute("type", "file");
- input.id = "browse";
- input.onclick = function(e) {
- e.cancelBubble = true;
- e.stopPropagation();
- }
- input.onchange = function() {
- var file = input.files[0];
- var reader = new FileReader();
- reader.onload = function(evt) {
- callback(evt.target.result);
- document.body.removeChild(input);
- }
- reader.readAsText(file);
- }
- document.body.appendChild(input);
- input.click();
- }
Создает окно выбора файла при вызове функции open (работает только после событий пользователя).
Если нужно отправить в каллбек бинарный файл, то следует использовать `reader.readAsArrayBuffer`. Так что лучше заодно передавать аргументом дополнительную функцию, которая будет проверять расширение в `file.name` и решать, читать файл бинарно, или как текст.
http://jsfiddle.net/RblSb/xk1qanrp/
Если нужно отправить в каллбек бинарный файл, то следует использовать `reader.readAsArrayBuffer`. Так что лучше заодно передавать аргументом дополнительную функцию, которая будет проверять расширение в `file.name` и решать, читать файл бинарно, или как текст.
http://jsfiddle.net/RblSb/xk1qanrp/