Java 如何找到FileItemIterator返回的FileItemStream的编码?
我使用ApacheCommonsFileUpload在Servlet中接收上传的文件,如中所述 我不确定item.getContentType()是否也将包含文本文件的文件编码,该编码可能与请求编码不同(例如ISO-8859-1),或者它是否始终仅包含文件类型。在我的测试中,我只收到了“text/plain”,但我期待的是“text/plain;Encoding=ISO-8859-1”,它是从客户端发送的Java 如何找到FileItemIterator返回的FileItemStream的编码?,java,google-app-engine,servlets,encoding,apache-commons-fileupload,Java,Google App Engine,Servlets,Encoding,Apache Commons Fileupload,我使用ApacheCommonsFileUpload在Servlet中接收上传的文件,如中所述 我不确定item.getContentType()是否也将包含文本文件的文件编码,该编码可能与请求编码不同(例如ISO-8859-1),或者它是否始终仅包含文件类型。在我的测试中,我只收到了“text/plain”,但我期待的是“text/plain;Encoding=ISO-8859-1”,它是从客户端发送的 我的理解正确吗?item.getContentType()应该包括编码(如果它是从客户端发
我的理解正确吗?item.getContentType()应该包括编码(如果它是从客户端发送的)?FileItemStream.getContentType()返回从浏览器POST传递的任何内容。它可以是“text/plain”,也可以是“text/plain;Encoding=ISO-8859-1”,也可以是完全的垃圾。内容类型只是一个字符串值,您相信浏览器会正确地提供给您(换句话说,根本不信任它)
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if (!item.isFormField()) {
System.out.println("Got an uploaded file: " + item.getFieldName()
+ ", name = " + item.getName() + " type = " + item.getContentType());
}