November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Thursday, September 3rd, 2015 03:07 pm

Когда не хочется заморачиваться загрузкой файла, ибо на серверной стороне из него нужна одна строчка, и вдобавок пользователь может захотеть эту строчку вписать копипастой, потому что у него в локальных файлах её вообще нет, она где-нибудь на другой машине хранится..
Конкретный пример – загрузка публичного ключа от 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е, в котором я не очень силён..

Оригинал этой записи в личном блоге.

Reply

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting