无法将图像文件从Android应用程序发布到Tomcat上托管的Java servlet

时间:2011-07-22 13:46:49

标签: java android servlets file-upload http-post

我正在处理的Android应用程序的一个功能是拍照并通过HTTP Post将其上传到Java servlet。我已经找到了一些关于一般过程应该如何工作的例子,并尝试了所有这些例子。目前,代码如下所示:

客户端:

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(request)时,此代码会失败: org.apache.tomcat.util.http.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly

我是Apache HttpUpload库的新用户。我在这里缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试使用构造函数:

    MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

默认使用模式STRICT,这可能是问题所在。