Требуется программно щелкнуть файл типа ввода и отобразить диалоговое окно открытия файла.
Это требование не может быть надежно выполнено. Некоторые браузеры отвечают на click()
на input type="file"
, другие - нет, другие (IE), кажется, разрешают это, но затем отказываются фактически отправлять форму.
Обходного пути нет, и ни одна библиотека не может обойти это ограничение - если не использовать некоторые не-HTML способы загрузки файла, такие как Flash или Java.
Более того, в стандарте HTML нет ничего, что требовало бы даже быть диалоговым окном открытия файла. Это специфичная для браузера и ОС деталь интерфейса. На других платформах, помимо браузеров Windows для настольных компьютеров, могут быть другие механизмы для отправки файлов, например перетаскивание. На этом уровне вы не можете эффективно взаимодействовать с полем загрузки файла.
Когда пользователь выбирает файл, нам нужно программно нажать кнопку для отправки на сервер.
Ну, это немного выполнимо. Поймать событие change
:
<form method="post" action="..." enctype="multipart/form-data">
<input type="file" id="f"/>
</form>
document.getElementById('f').onchange= function() {
if (this.value!=='')
this.form.submit();
};