2

J'utilise Apache Commons FileUpload pour recevoir les fichiers téléchargés dans un Servlet, comme décrit à http://code.google.com/appengine/kb/java.html#fileformsComment puis-je trouver l'encodage d'un FileItemStream retourné par FileItemIterator?

 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()); 

      } 

Je ne sais pas si item.getContentType() sera également Coutain l'encodage de fichiers pour les fichiers texte qui pourrait être différent de le codage de la requête (par exemple ISO-8859-1) ou s'il contient toujours uniquement le type de fichier. Dans mes tests, j'ai reçu seulement "texte/plaine" mais je m'attendais à "texte/plain; Encoding = ISO-8859-1" qui a été envoyé par le client.

Est-ce que ma compréhension correcte que le item.getContentType() devrait inclure l'encodage (si elle est envoyée du client)? FileItemStream.getContentType() renvoie tout ce qui a été passé à partir du POST du navigateur.

Répondre

2

Il pourrait être "texte/plain" ou il pourrait être "texte/plain; Encodage = ISO-8859-1" OU il pourrait être une poubelle complète. Le type de contenu est juste une valeur de chaîne que vous faites confiance au navigateur pour vous donner correctement (en d'autres termes, ne croyez pas du tout).