powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка файла в запросе
13 сообщений из 13, страница 1 из 1
Отправка файла в запросе
    #38875318
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно отправить файл байтами в jsp.
сказали отправлять файла в запросе байтами но не нашел как это делать.
...
Рейтинг: 0 / 0
Отправка файла в запросе
    #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
Отправка файла в запросе
    #38875536
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SummerIsNotFar,

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

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

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

Если файл надо послать от сервера к серверу, то всё сильно зависит от принимающей стороны. Это может быть HTTP POST
https://www.google.com/search?q=httpclient post file
или TCP Socket (просто байтами же)? Или любой другой протокол.
...
Рейтинг: 0 / 0
Отправка файла в запросе
    #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
Отправка файла в запросе
    #38875993
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосвот типа такого хотел

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

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

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

можете ли вы показать мне как вы это реализуете, все что смог на данный момент это оно.
...
Рейтинг: 0 / 0
Отправка файла в запросе
    #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
Отправка файла в запросе
    #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
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка файла в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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