Диалог открытия файла без input

  1. function open(callback) {
  2.     var input = document.createElement("input");
  3.     input.style.visibility = "hidden";
  4.     input.setAttribute("type", "file");
  5.     input.id = "browse";
  6.     input.onclick = function(e) {
  7.         e.cancelBubble = true;
  8.         e.stopPropagation();
  9.     }
  10.     input.onchange = function() {
  11.         var file = input.files[0];
  12.         var reader = new FileReader();
  13.         reader.onload = function(evt) {
  14.             callback(evt.target.result);
  15.             document.body.removeChild(input);
  16.         }
  17.         reader.readAsText(file);
  18.     }
  19.     document.body.appendChild(input);
  20.     input.click();
  21. }
Создает окно выбора файла при вызове функции open (работает только после событий пользователя).
Если нужно отправить в каллбек бинарный файл, то следует использовать `reader.readAsArrayBuffer`. Так что лучше заодно передавать аргументом дополнительную функцию, которая будет проверять расширение в `file.name` и решать, читать файл бинарно, или как текст.

http://jsfiddle.net/RblSb/xk1qanrp/

Мы в соцсетях

vk tw tg yt

Пожертвования

Аноним2850 р.
Freddy1700 р.
riseremi1611 р.
NaruTrey800 р.
vlavolk637 р.