Come posso trovare la codifica di un FileItemStream restituito da FileItemIterator?
-
21-09-2019 - |
Domanda
io uso Apache Commons FileUpload per ricevere i file caricati in una Servlet, come descritto in http://code.google.com/appengine/kb/java.html#fileforms
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());
}
Non sono sicuro se item.getContentType () sarà anche il coutain la codifica del file per file di testo che può essere diverso dalla richiesta di codifica, (ad esempio ISO-8859-1), o se sempre contiene solo il tipo di file solo. Nei miei test ho ricevuto solo "text / plain", ma mi aspettavo "text / plain; Encoding = ISO-8859-1"., Che è stato inviato dal client
È la mia comprensione corretta che l'item.getContentType () dovrebbe includere la codifica (se viene inviato dal client)?
Soluzione
FileItemStream.getContentType () restituisce ciò che è stata approvata dal POST del browser. Potrebbe essere "text / plain" o potrebbe essere "text / plain; Encoding = ISO-8859-1" o potrebbe essere completa spazzatura. Il tipo di contenuto è solo un valore di stringa che si sta confidando al browser di dare correttamente (in altre parole, non si fidano affatto).