Отправить Прикрепленные Файлы Постом

Тема в разделе "Lotus - Программирование", создана пользователем dimat, 10 сен 2013.

  1. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Всем привет!

    Есть вот такая хтмл страничка, которая позволяет отправить логин, пароль и некоторый список файлов постом на сервер.
    <html>
    <head>
    <title>Загрузка отчетов</title>
    <style>
    table {text-align:center;border:0px solid black;width:600px}
    td {text-align:center;border:0px solid black;width:600px}
    .tdLeft {text-align:left}
    .tdRight {text-align:right}
    </style>
    <script type="text/javascript">
    var maxFileId = 1;
    var listFiles = "";
    function createFormFile() {
    var fileForms = document.getElementById("fileForms");

    var divFile=document.createElement("DIV");
    divFile.id = "divFile"+maxFileId;
    divFile.innerHTML = "<input type=\"file\" name=\"report"+maxFileId+"\" id=\"idReport"+maxFileId+"\">";
    divFile.innerHTML += "<a href=\"#\" style='cursor:pointer;visibility:hidden' id=\"delFile"+maxFileId+"\" onclick=\"deleteFormFile("+maxFileId+")\">Отменить</a>";

    fileForms.appendChild(divFile);
    maxFileId++;
    }

    function deleteFormFile(id) {
    if(id == maxFileId-1)
    return;
    var fileForms = document.getElementById("fileForms");
    var fileToDel = document.getElementById("divFile"+id);
    fileForms.removeChild(fileToDel);
    }

    function createFiles() {
    var form = document.getElementById("postForm");
    if(document.URL[document.URL.length-1] != '/')
    form.action = document.URL + '/' + 'upload';
    else
    form.action = document.URL + 'upload';
    createFormFile();
    checkLast();
    }
    function checkLast(){
    var lastFile = document.getElementById("idReport"+(maxFileId-1));
    var delFile = document.getElementById("delFile"+(maxFileId-1));
    if(lastFile.value) {
    delFile.style.visibility = "visible";
    createFormFile();
    }
    setTimeout("checkLast();",200);
    }
    function getFiles(){
    var i;
    listFiles = "";
    for(i=0;i<document.forms[0].elements.length;i++) {
    if(document.forms[0].elements.type == "file")
    listFiles += document.forms[0].elements.name + " ";
    }
    document.getElementById("fileList").value = listFiles.substr(0,listFiles.length-1);
    }
    </script>
    </head>
    <body onload="createFiles()">
    <div align="center">
    <form action="upload" enctype="multipart/form-data" method="post" onsubmit="getFiles();" id="postForm">
    <table>
    <tr><td colspan="2"><h2>Загрузка отчетов</h2>ver 1.1.2.7</td></tr>
    <tr><td class="tdRight">Логин:</td><td class="tdLeft"><input type="text" name="login"></td></tr>
    <tr><td class="tdRight">Пароль:</td><td class="tdLeft"><input type="password" name="password"></td></tr>
    <tr><td colspan="2">
    <b>Укажите файлы загружаемых отчетов</b><br>
    <p id="fileForms">
    </p>
    </td></tr>
    <tr><td colspan="2" class="tdRight">
    <input type="hidden" name="fileList" value="" id="fileList">
    <input type="submit" value="Отправить" >
    </td></tr>
    </table>
    </form>
    </div>
    </body>
    </html>




    Необходимо на форме реализовать такой же функционал. Поле с логином, поле с паролем, поле с прикрепленными файлами и кнопка при нажатии на которую постом отправляется логин, пароль и файлы на указанный сервер.

    Подскажите как это сделать?
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  3. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Уточнение: нужно сделать на форме лотус и все это должно работать в клиенте(не web)
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    хм... агент на текущем документе, на сервере.
    еще вариант отправлять письмо-запрос с параметрами, сервер принимает запрос -> обрабатывает.
    а может xpage? по сути такая же страница, но при этом и на клиенте...

    ps я бы делал запросом, до xpage еще руки не дошли.
    Отправлял бы письмо на определенный адрес, mail-in database. В ней агент на обработку.
    После обработки сносил бы документ где содержится attach, логин, пароль.
    Если ошибка - документ жив, можно поправить и переобработать.
     
  5. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Ну тут разные варианты могут быть, с этим нет проблем, проблема в том, что я не знаю как сформировать такой же пост запрос и отправить его

    Кстати, xpage не вариант, у всех 7 клиент стоит
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  7. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Вобщем сделали так: пхп скрипт который гетом принимает параметры (логин, пароль, список путей к файлам) и отправляет уже пост с логином паролем и файлами, на стороне лотуса гет выполняет ява агент, предварительно определив пару логин/пароль и список путей к файлам.

    наверное можно было бы сделать все на ява, но я так и не смог разобраться как отправить помимо текста еще и файлы.
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    вы про апач либу читали - там прям код написан, кот. нуна в джава вставить
     
  9. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    о, только сейчас увидел пост, спасибо, почитаю
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  11. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    lmike Спасибо!
    Кстати, с праздником!
     
  12. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    кста - вот полный пример (ссылка в блоге выше не работает)
    http://indiwiz.wordpress.com/2009/02/11/mu...ts-http-client/

    Добавлено: текст выложу, ато сцылки могут подохнуть :(<!--shcode--><pre><code class='java'>import java.io.File;
    import java.io.IOException;
    import java.net.URL;
    import java.nio.charset.Charset;
    import org.apache.http.HttpResponse;
    import org.apache.http.auth.AuthScope;
    import org.apache.http.auth.UsernamePasswordCredentials;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.mime.MultipartEntity;
    import org.apache.http.entity.mime.content.FileBody;
    import org.apache.http.entity.mime.content.StringBody;
    import org.apache.http.impl.client.DefaultHttpClient;

    ...

    // The input:
    File f = ...;
    String title = ...;
    String desc = ...;

    // The execution:
    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpPost method = new HttpPost("http://host:port/path");
    MultipartEntity entity = new MultipartEntity();
    entity.addPart("title", new StringBody(title, Charset.forName("UTF-8")));
    entity.addPart("desc", new StringBody(desc, Charset.forName("UTF-8")));
    FileBody fileBody = new FileBody(f);
    entity.addPart("file", fileBody);
    method.setEntity(entity);

    HttpResponse response = httpclient.execute(method);
    System.out.println(response.getStatusLine());[/CODE]

    Добавлено: останется вопрос с авторизацией ;) (сессионной), но это тема отдельная (здесь как-то пробегала КМК)
     
Загрузка...

Поделиться этой страницей