JSP peut télécharger des fichiers sur le serveur via des formulaires HTML. Le type de fichier peut être un fichier texte, un fichier binaire, un fichier image ou tout autre document.
Ensuite, nous utilisons des balises HTML pour créer le formulaire de téléchargement de fichiers. Les points suivants doivent être notés :
L'attribut de la méthode form doit être défini sur la méthode POST et la méthode GET ne peut pas être utilisée.
L'attribut form enctype doit être défini sur multipart/form-data.
L'attribut d'action du formulaire doit être défini sur l'adresse du fichier jsp soumis en arrière-plan pour le téléchargement du fichier. Par exemple, le fichier programme uploadFile.jsp est utilisé pour traiter les fichiers téléchargés.
Pour télécharger un élément de fichier, vous devez utiliser la balise <input .../> et définir l'attribut sur type="file". Si vous devez télécharger plusieurs fichiers, vous pouvez définir des noms différents dans la balise <input .../>.
Voici un formulaire pour télécharger des fichiers. Un exemple est le suivant :
<html><head><title>Formulaire de téléchargement de fichier</title></head><body><h3>Téléchargement de fichier :</h3>Sélectionnez un fichier à télécharger : <br /><form action="UploadServlet" method="post" enctype="multipart/form-data"><input type="file" name="file" size="50" /><br /><input type="submit" value="Télécharger le fichier " /></form></body></html>Accédez au fichier dans votre navigateur local. L'interface d'affichage est la suivante Lorsque vous cliquez sur "Télécharger le fichier", une fenêtre apparaîtra vous permettant de sélectionner le fichier à télécharger :
Tout d'abord, nous définissons d'abord l'emplacement où le fichier est stocké sur le service après le téléchargement. Vous pouvez écrire le chemin dans votre programme, ou nous pouvons définir le répertoire où le fichier est stocké en définissant l'élément context-param dans le web.xml. fichier de configuration, comme suit Afficher :
<web-app>....<context-param> <description>Adresse de téléchargement du fichier</description> <param-name>file-upload</param-name> <param-value> c:apache-tomcat- 5.5.29webappsdata </param-value> </context-param>....</web-app>
Le fichier de script suivant UploadFile.jsp peut gérer plusieurs fichiers téléchargés. Avant d'utiliser ce script, nous devons prêter attention aux points suivants :
L'exemple suivant s'appuie sur FileUpload, vous devez donc introduire le dernier fichier de package commons-fileupload.xxjar dans votre chemin de classe. L'adresse de téléchargement est : http://commons.apache.org/fileupload/.
FileUpload s'appuie sur Commons IO, vous devez donc introduire le dernier commons-io-xxjar dans votre chemin de classe. L'adresse de téléchargement est : http://commons.apache.org/io/.
Lorsque vous testez l'exemple suivant, vous devez télécharger et confirmer que la taille du fichier téléchargé est inférieure à la taille définie par la variable maxFileSize , sinon le fichier ne peut pas être téléchargé correctement.
Assurez-vous d'avoir créé les répertoires c:temp et c:apache-tomcat-5.5.29webappsdata.
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %><%@ page import="javax.servlet.http.*" %><%@ page import= "org.apache.commons.fileupload.*" %><%@ page import="org.apache.commons.fileupload.disk.*" %><%@ page import="org.apache.commons.fileupload.servlet.*" %><%@ page import="org.apache.commons.io.output.*" %><% Fichier fichier ; int maxFileSize = 5000 * 1024 ; int maxMemSize = 5000 * 1024; Contexte ServletContext = pageContext.getServletContext(); context.getInitParameter("file-upload"); // Vérifier le type de contenu téléchargé String contentType = request.getContentType(); if ((contentType.indexOf("multipart/form-data") >= 0)) { DiskFileItemFactory factory = new DiskFileItemFactory(); // Définir la valeur maximale des fichiers stockés en mémoire factory.setSizeThreshold(maxMemSize); Les données stockées localement sont supérieures à maxMemSize. factory.setRepository(new File("c:\temp")); // Crée un nouveau gestionnaire de téléchargement de fichiers ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax( maxFileSize ); try{ // Analyser le fichier obtenu List fileItems = upload.parseRequest(request); Traiter les fichiers téléchargés Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Téléchargement de fichiers JSP</title> " ); out.println("</head>"); out.println("<body>"); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { // Récupère les paramètres du fichier téléchargé String fieldName = fi.getFieldName(); String fileName = fi.getName(); .isInMemory (); long sizeInBytes = fi.getSize(); // Écrire dans le fichier if( fileName.lastIndexOf("\") >= 0 ){ file = new File( filePath , fileName.substring( fileName.lastIndexOf("\"))) ; }else{ file = new File( fileName.substring(fileName.lastIndexOf("\")+1)) ; fi.write( fichier ) ; out.println("Nom du fichier téléchargé : " + chemin du fichier + nom du fichier + "<br>"); out.println("</body>"); out.println("</html>"); }catch(Exception ex) { System.out.println(ex } }else{ out.println("<); html>"); out.println("<head>"); out.println("<title>Téléchargement de servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>Aucun fichier téléchargé</p>"); out.println("</body>"); "); }%>
Ensuite, accédons à http://localhost:8080/UploadFile.htm via le navigateur. L'interface est la suivante et téléchargeons le fichier :
Si votre script JSP s'exécute normalement, le fichier sera téléchargé vers c:apache-tomcat-5.5.29webappsdata. Vous pouvez ouvrir le dossier pour voir si le téléchargement a réussi.