передача изображения через form
От: Аноним  
Дата: 15.03.09 19:09
Оценка:
Есть простая задача — средствами HTML form загрузить картинку и с помощью jsp отобразить её.

Делаю так:

Страничка № 1 с формой:

<html>
    <head>        
        <title>upload</title>
    </head>
    <body>
        <h1>upload</h1>
        
        <form action="uploadPhotoSQL.jsp" method="post" enctype="multipart/form-data">
            <input type=file name=ufile>
            <input type=submit value="Attach">
        </form>
    </body>
</html>


Страница uploadPhotoSQL.jsp, обрабатывающая переданные данные:

<%@ page import="javax.servlet.*,javax.servlet.http.*,java.io.*" %>

<html>
    <head>        
        <title>result</title>
    </head>
    <body>
        <h1>result</h1>
        <%
        ServletOutputStream outs = response.getOutputStream();
        response.setContentType("image/jpeg");
        
        InputStream is = request.getInputStream();
        int[] data = new int[request.getContentLength()];
        int bytes;
        int counter = 0;
        while((bytes=is.read())!=-1)
        {
          data[counter]=bytes;
          counter++;
        }
        is.close();
        
    for(int i=0; i<data.length;i++){
        outs.write(data[i]);
    }
    outs.flush();
    outs.close(); 
        
        %>
    </body>
</html>

Проблема в том, что даже при самом первом вызове "is.read()" возвращается "-1", то есть получается, что данных на входе нет. Хотя "request.getContentLength()" при этом возвращает правильный размер картинки. Не могу понять, в чем дело.

P.S.: при использовании похожего кода в сервлетах всё работает
Re: передача изображения через form
От: Аноним  
Дата: 15.03.09 20:44
Оценка:
Подсказали, как решить эту проблему. Дело оказалось не в коде, а в наличии upload-фильтра в web.xml в tomcat'е. Удалил его и все заработало.

PS: приведенный выше код по обработке потока не совсем полный, поэтому при его полном копировании не уверен в его работоспособности. Но главное, что входной поток начал читаться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.