Прочитать javascript’ом локальный файлик в форму
Когда не хочется заморачиваться загрузкой файла, ибо на серверной стороне из него нужна одна строчка, и вдобавок пользователь может захотеть эту строчку вписать копипастой, потому что у него в локальных файлах её вообще нет, она где-нибудь на другой машине хранится..
Конкретный пример – загрузка публичного ключа от ssh.
Делаем так: в основной форме для этой строчки используем обычный input типа text, который можно заполнить руками. А чтобы прочитать в него строчку из файлика, встраиваем рядышком (или даже прямо внутрь основной формы) дополнительную форму с input типа file и обработчиком на JS, который читает файлик сразу после его выбора в браузере и засовывает нужный контент в поле основной формы:
<script type="text/javascript"> var fileformchange = function(event) { var input = event.target.files[0]; var reader = new FileReader(); reader.onload = function(){ var text = this.result.split('\n')[0]; document.forms["mainform"]["pubkey"].value=text; } reader.readAsText(input); } </script> <form id="mainform" action="куда надо" method="POST"> Login: <input type="text" name="login" maxlength="30"/> Password: <input type="password" name="password" maxlength="30"/> SSH public key:<input type="text" name="pubkey" id="pubkey" size="50" maxlength="16384"/> ещё что надо... Потом отдельная формочка для выбора файла: <form id="fileform">Read key from file: <input type="file" id="rf" onchange="fileformchange(event)"/></form> А потом завершение основной формы: <input type="submit" name="submit" value="Upload"/> </form>
P.S. Сколько уже времени я формально считаюсь сисадмином, а на практике постоянно приходится заниматься программированием. Сейчас вот на javascriptе, в котором я не очень силён..
Оригинал этой записи в личном блоге.