2014-01-31 5 views
1

У меня простая форма с enctype "multipart"; Я использую это для загрузки изображения на свой сервер. У меня есть два возможных решения, но ни один из них не является полным.Загрузка изображений с помощью Servlet 3.0

Первое решение:

FileItemIterator iterator = upload.getItemIterator(request); 

while(iterator.hasNext()){ 
    FileItemStream item = iterator.next(); 

    if(item.isFormField()){ 
      // store IMG 
    } 

} // ~while(iter.hasNext()) 

В этом решении, я не могу получить размеры загружаемого файла, но я могу получить, если это поле формы или нет (с использованием item.isFormField())

Мои второе решение использует Servlet 3.0 API:

for(Part part: request.getParts()){ 
    System.out.println(part.getSize()); 
} 

Здесь я могу получить размер загруженного изображения, но я не могу сказать, является ли это просто поле формы или нет.

Что мне не хватает?

Что вам нужно для меня?

+0

скажите, пожалуйста, что вы подразумеваете под измерениями? –

ответ

1

Как упомянуто в документации FileItemStream

метода isFormField() говорит ли, если это простая форма поле возвращает истину, в противном случае возвращает ложь.

так что для загрузки изображения он возвращает ложное

так что вы должны сделать следующее:

if(! item.isFormField()){ 
       // store IMG 
     }else { 

//simple form field. 
     } 

и относятся к этому ответу here, чтобы увидеть, как преобразовать InputStream в байт [], чтобы узнать, как в вашем загруженном файле есть много байтов.

, если вы используете сервлет 3 сделать так:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String username= request.getParameter("username"); // Retrieves <input type="text" name="username"> 
    Part filePart = request.getPart("file"); // Retrieves <input type="file" name="file"> 
    String filename = filePart.getName(); 
    InputStream filecontent = filePart.getInputStream(); 
    // ... (do your job here) 
} 

и дать мне некоторую обратную связь.

Надеюсь, что это поможет.

+0

О, хорошо, спасибо за ваш ответ, я попробую! ... Есть ли способ получить «isFormField» с классом «Part» (сервлет 3.0)? –

+0

Я не могу понять ваш вопрос? –

+0

@ AndreaCatania это сработало? –

Смежные вопросы