


Introduction aux solutions aux noms de fichiers tronqués dans les téléchargements Java
Fonction de téléchargement de fichiers de développement Web Java (le code est le suivant), si le nom du fichier contient des caractères chinois, il apparaîtra souvent tronqué et devra être encodé. (Recommandé : Tutoriel vidéo Java)
String fileName = "测试文件.doc"; try { HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); response.setHeader("Content-disposition", "attachment; filename=" + fileName); response.setContentLength((int) file.length()); response.setContentType("application/octet-stream;charset=UTF-8"); byte[] b = new byte[1024]; int i = 0; FileInputStream fis = new FileInputStream(file); ServletOutputStream out = response.getOutputStream(); while ((i = fis.read(b)) > 0) { out.write(b, 0, i); } out.flush(); out.close; fis.close(); } catch (IOException e) { e.printStackTrace(); } FacesContext.getCurrentInstance().responseComplete(); return null;
Option 1 : Encoder le nom du fichier en Unicode
fileName = URLEncoder.encode(fileName, "UTF-8");
Le nom du fichier sera converti en codage Unicode (%E6%B5 %8B %E8%AF%95%E6%96%87%E4%BB%B6.doc), le test est normal sous le navigateur IE, mais le nom de fichier obtenu lors du test sous le navigateur Firefox est Unicode non décodé.
Option 2 : Encodez le nom du fichier en ISO-8859-1
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
Cette méthode peut obtenir des fichiers avec des noms de fichiers chinois sous IE et Firefox. Mais s'il y a des espaces dans le nom du fichier, Firefox tronquera le nom du fichier à partir des espaces et vous devrez remplacer les espaces dans le nom du fichier par des caractères visibles tels que des traits de soulignement avant l'encodage.
fileName = new String(fileName.replace(" ", "_").getBytes("UTF-8"), "ISO-8859-1");
Option 3 : Incompatibilité du navigateur
Dans le développement Web Java, le problème des noms de fichiers tronqués dans les fonctions de téléchargement de fichiers est souvent rencontré.
Différents navigateurs proposent différentes solutions à ce problème.
Pour IE, UTF8 encode le nom de fichier via URLEncoder.
Les autres navigateurs (Firefox, Chrome, Safari, Opera) doivent convertir les octets en ISO8859-1.
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { filename = URLEncoder.encode(filename, "UTF-8"); } else { filename = new String(filename.getBytes("UTF-8"), "ISO8859-1"); }
Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft
