Проблема при отправке файла изображения из приложения Android в сервлет Java, размещенный на Tomcat - PullRequest
2 голосов
/ 22 июля 2011

Одна из функций приложения Android, над которым я работаю, - это сделать снимок и загрузить его через HTTP Post в сервлет Java. Я нашел несколько примеров того, как должен работать общий процесс, и перепробовал их все. В настоящее время код выглядит так:

Клиент:

String fileName = pathToFile;
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost method = new HttpPost(path);
MultipartEntity entity = new MultipartEntity();
FileBody fileBody = new FileBody(new File(fileName));
entity.addPart("file", fileBody);
method.setEntity(entity);

HttpResponse response = httpclient.execute(method);

Сервер:

List<FileItem> fileItems =
new ServletFileUpload( new DiskFileItemFactory( 1024 * 1024, new File("C:\\tmp" ))).
parseRequest(request);

for ( FileItem item : fileItems ) {
String fieldName = item.getFieldName();

if ( item.isFormField()) { 
    item.getString();
}
else {
    item.getInputStream();
} // File uploaded
}

Сейчас я не беспокоюсь о том, что делать с входным потоком, потому что этот код завершается ошибкой, когда мы вызываем parseRequest (запрос) с этой ошибкой: org.apache.tomcat.util.http.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly

Я новый пользователь библиотеки Apache HttpUpload. Что мне здесь не хватает?

Заранее спасибо.

1 Ответ

1 голос
/ 22 июля 2011

Попробуйте использовать конструктор:

    MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

По умолчанию используется режим STRICT, и это может быть проблемой.

...