Android—将文件上载到Javaservlet并使用ApacheIOutils处理它
我正在使用以下教程在Android中上载文件: 在服务器端,我使用Javaservlet和ApacheIOutils来处理它Android—将文件上载到Javaservlet并使用ApacheIOutils处理它,java,android,servlets,file-upload,Java,Android,Servlets,File Upload,我正在使用以下教程在Android中上载文件: 在服务器端,我使用Javaservlet和ApacheIOutils来处理它 ServletFileUpload fileUpload = new ServletFileUpload(); FileItemIterator fileItemIterator = fileUpload.getItemIterator(request); while (fileItemIterator.hasNext()) { FileItemStream fil
ServletFileUpload fileUpload = new ServletFileUpload();
FileItemIterator fileItemIterator = fileUpload.getItemIterator(request);
while (fileItemIterator.hasNext()) {
FileItemStream filestream = fileItemIterator.next();
doStuff(filestream);
}
在浏览器中一切正常,但在Android上,我的问题是当我在文件流上调用getContentType时,它返回null。
为什么这里有差异?我没有处理getContentType的空值,因为有人告诉我,空值不合适。我使用Wireshark查看浏览器实际发送的内容。 在内容处理之后(例如“Content-Type:application/pdf\r\n\r\n”),会发送另一个内容类型头(在“MIME多部分媒体封装”部分)。 因此,在文件上载教程中,在以下行之后:
dos.writeBytes("Content-Disposition: form-data;name=\"uploadedfile\";" + "filename=\"" + fileName + "\"" + lineEnd);
我刚才补充说:
String mimeType = URLConnection.guessContentTypeFromName(file.getName());
dos.writeBytes("Content-Type: " + mimeType + lineEnd);
现在,上传过程工作正常
当然,对于许多扩展,mimeType可能为null,因此应该根据需要对其进行检查