Загрузка изображений из Android в сервлет для сохранения на сервере - PullRequest
3 голосов
/ 05 марта 2011

Я создал сервлет, который принимает изображение из моего приложения для Android. Я получаю байты на своем сервлете, однако я хочу иметь возможность сохранить это изображение с исходным именем на сервере.Как я это сделал.Я не хочу использовать Apache Commons.Есть ли другое решение, которое будет работать для меня?

спасибо

1 Ответ

5 голосов
/ 05 марта 2011

Отправьте его как multipart / form-data запрос с помощью MultipartEntity класса встроенного в Android HttpClient API .

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://example.com/uploadservlet");
MultipartEntity entity = new MultipartEntity();
entity.addPart("fieldname", new InputStreamBody(fileContent, fileContentType, fileName));
httpPost.setEntity(entity);
HttpResponse servletResponse = httpClient.execute(httpPost);

А затем в методе doPost() сервлета используйте Apache Commons FileUpload для извлечения части.

try {
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    for (FileItem item : items) {
        if (item.getFieldName().equals("fieldname")) {
            String fileName = FilenameUtils.getName(item.getName());
            String fileContentType = item.getContentType();
            InputStream fileContent = item.getInputStream();
            // ... (do your job here)
        }
    }
} catch (FileUploadException e) {
    throw new ServletException("Cannot parse multipart request.", e);
}

Я не хочу использовать Apache Commons

Если вы не используете Servlet 3.0, который поддерживает multipart/form-data запрос коробки с HttpServletRequest#getParts(), вам придется заново изобретать анализатор multipart / form-data самостоятельно на основе RFC2388 . Это только укусит вас в долгосрочной перспективе. Жесткий. Я действительно не вижу причин, по которым вы бы не использовали его. Это просто невежество? По крайней мере, это не так сложно. Просто поместите commons-fileupload.jar и commons-io.jar в папку /WEB-INF/lib и используйте приведенный выше пример. Вот и все. Вы можете найти здесь другой пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...