Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка файла в запросе / 13 сообщений из 13, страница 1 из 1
10.02.2015, 06:41
    #38875318
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Как можно отправить файл байтами в jsp.
сказали отправлять файла в запросе байтами но не нашел как это делать.
...
Рейтинг: 0 / 0
10.02.2015, 08:50
    #38875371
SummerIsNotFar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
1. Не совсем понятно, Вы хотите принять файл из формы или передать куда-то?
2. Взгляните на этот POST запрос, он передает пару параметров и файл. Может быть это поможет Вам понять механизм передачи.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
POST / HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 1184
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1J6QsH7bkCC4V4lE
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: JSESSIONID=f73ebe59584d391b1030db0ec307; treeForm_tree-hi=treeForm:tree:applications:jee1-1_0-SNAPSHOT; vc=7

------WebKitFormBoundary1J6QsH7bkCC4V4lE
Content-Disposition: form-data; name="username"

Summer
------WebKitFormBoundary1J6QsH7bkCC4V4lE
Content-Disposition: form-data; name="message"

Some text	
------WebKitFormBoundary1J6QsH7bkCC4V4lE
Content-Disposition: form-data; name="file"; filename="key.txt"
Content-Type: text/plain

здесь передается содержимое файла байтами
------WebKitFormBoundary1J6QsH7bkCC4V4lE
Content-Disposition: form-data; name="submit"

Отправить
------WebKitFormBoundary1J6QsH7bkCC4V4lE--
...
Рейтинг: 0 / 0
10.02.2015, 10:41
    #38875536
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
SummerIsNotFar,

мне надо отправлять запрос в байтах на сервер запросом, то что вы написали это не понятно для меня и видимо не то
...
Рейтинг: 0 / 0
10.02.2015, 11:09
    #38875588
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Елдос,
ты не провильно формилируешь вопрос, поэтому и тебе и другим непонятно, что ты хочешь получить.
...
Рейтинг: 0 / 0
10.02.2015, 11:13
    #38875594
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
вадя,

прошу прощения, наверное я и сам не понимаю что хочу,
просто сказали отправить файл байтами с сервера на сервер
...
Рейтинг: 0 / 0
10.02.2015, 12:01
    #38875698
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Елдос,

JSP это клиент-серверная технология. Работает на сервере. А результат на клиенте. Поэтому с наскока не понять тебе отправлять файл их JSP как из сервлета, или из JSP как из HTML.

Если файл надо послать от сервера к серверу, то всё сильно зависит от принимающей стороны. Это может быть HTTP POST
https://www.google.com/search?q=httpclient post file
или TCP Socket (просто байтами же)? Или любой другой протокол.
...
Рейтинг: 0 / 0
10.02.2015, 14:34
    #38875961
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Blazkowicz,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
<%

    try {

        URL url = new URL("http://10.2.2.210:12000/EM/httpadapter");
        HttpURLConnection connection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY);
        connection.setDoOutput(true);
        connection.setDoInput(true);
        byte[] resp;
        File fl=new File("/var/www/epayn.kkb.kz/virtual_card.rq.xml");

        resp = getBytesFromFile(fl);

        DocumentBuilderFactory dbfreq = DocumentBuilderFactory.newInstance();
        dbfreq.setNamespaceAware(true);
        DocumentBuilder dbreq = dbfreq.newDocumentBuilder();
        Document docrequest = dbreq.parse(new ByteArrayInputStream(resp));

        OutputStream cos = connection.getOutputStream();

        Transformer transformer = TransformerFactory.newInstance().newTransformer();

        transformer.transform(new DOMSource(docrequest.getDocumentElement()), new StreamResult(cos));

        cos.flush();


        ByteArrayOutputStream responseStream = new ByteArrayOutputStream();
        InputStream cis = null;
        Exception caught = null;

        try {
            cis = connection.getInputStream();
        }  catch(IOException e) {
            caught = e;
            cis = connection.getErrorStream();
        }

        byte[] ba2 = new byte[1024];
        int read;
        while((read = cis.read(ba2)) > 0)
            responseStream.write(ba2, 0, read);
        byte[] responseA = responseStream.toByteArray();
        String value = new String(responseA,"utf-8");
        out.print(value);
        DocumentBuilderFactory dbfresp = DocumentBuilderFactory.newInstance();
        dbfresp.setNamespaceAware(true);


        DocumentBuilder dbresp = dbfresp.newDocumentBuilder();
        Document docresp = dbresp.parse(new ByteArrayInputStream(responseA));


        responseStream.close();
        cis.close();
    } catch (Exception e) {
        out.print(e);
    }

%><%!
    public static byte[] getBytesFromFile(File file) throws IOException {

        InputStream is = new FileInputStream(file);
        long length = file.length();
        byte[] bytes = new byte[(int)length];
        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length&& (numRead = is.read(bytes, offset, Math.min(bytes.length - offset, 512*1024))) >= 0) {
            offset += numRead;
        }        if (offset < bytes.length) {
            throw new IOException("Could not completely read file "+file.getName());
        }
        is.close();
        return bytes;
    }
%>


вот типа такого хотел
вроде бы работает но еще надо проверить
...
Рейтинг: 0 / 0
10.02.2015, 15:05
    #38875993
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Елдосвот типа такого хотел

"Смотрите, я умею делать простые вещи пипец как сложно."
...
Рейтинг: 0 / 0
11.02.2015, 07:42
    #38876527
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Blazkowicz,

Не знаю как для вас но для меня это было не просто или я вас не понял о чем вы написали
...
Рейтинг: 0 / 0
11.02.2015, 08:50
    #38876558
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
ЕлдосНе знаю как для вас но для меня это было не просто или я вас не понял о чем вы написали
Вопрос не в том на сколько это было сложно лично для вас. Вопрос в том на сколько сложный и запутанный спагетти код на выходе. Тут как минимум 3-4 различных действия просматривается, каждое из которых стоило бы оформить отдельным методом.

А половина кода вообще тупо выбрасывается и заменяется использованием классов Apache Commons.
...
Рейтинг: 0 / 0
11.02.2015, 09:02
    #38876562
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Blazkowicz,

можете ли вы показать мне как вы это реализуете, все что смог на данный момент это оно.
...
Рейтинг: 0 / 0
11.02.2015, 09:50
    #38876599
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
Елдосможете ли вы показать мне как вы это реализуете, все что смог на данный момент это оно.
Из вашего кода решительно невозможно понять для чего в задачу копирования файла вплетен XML API. Чтобы в него вникнуть и понять все моменты, нужно потерять около получаса своей жизни.

Мой бы код выглядел примерно так.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void processFileRemotely(File file, URL serviceUrl, OutputStream resultConsumer){
    HttpURLConnection conn = initializeConnection(url);
    try(InputStream in = new BufferedInputStream(new FileInputStream(file));
         OutputStream out = conn.getOutputStream()){  
             IOUitils.copy(in, out);
    }    

    try(InputStream in = conn.getInputStream())){  
             IOUitils.copy(in, resultConsumer);
    }    
}
...
Рейтинг: 0 / 0
11.02.2015, 12:29
    #38876837
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла в запросе
BlazkowiczЕлдосможете ли вы показать мне как вы это реализуете, все что смог на данный момент это оно.
Из вашего кода решительно невозможно понять для чего в задачу копирования файла вплетен XML API. Чтобы в него вникнуть и понять все моменты, нужно потерять около получаса своей жизни.

Мой бы код выглядел примерно так.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void processFileRemotely(File file, URL serviceUrl, OutputStream resultConsumer){
    HttpURLConnection conn = initializeConnection(url);
    try(InputStream in = new BufferedInputStream(new FileInputStream(file));
         OutputStream out = conn.getOutputStream()){  
             IOUitils.copy(in, out);
    }    

    try(InputStream in = conn.getInputStream())){  
             IOUitils.copy(in, resultConsumer);
    }    
}


Да вы правы, большое спасибо на много проще
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка файла в запросе / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]