Téléchargement de fichiers JSP
JSP peut télécharger des fichiers sur le serveur via un formulaire HTML. Le type de fichier peut être un fichier texte, un fichier binaire, un fichier image ou tout autre document.
Créer un formulaire de téléchargement de fichiers
Ensuite, nous utilisons des balises HTML pour créer un formulaire de téléchargement de fichiers :
- <. 🎜> L'attribut form form
method doit être défini sur la méthode POST et la méthode GET ne peut pas être utilisée. L'attribut
- form form
enctype doit être défini sur multipart/form-data. L'attribut
- form form
action 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.
- Le téléchargement d'éléments de fichier nécessite l'utilisation de la balise <input .../>, avec l'attribut défini sur type="file". Si vous devez télécharger plusieurs fichiers, vous pouvez définir des noms différents dans la balise <input .../>
<html> <head> <title>File Uploading Form</title> </head> <body> <h3>File Upload:</h3> Select a file to upload: <br /> <form action="UploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" size="50" /> <br /> <input type="submit" value="Upload File" /> </form> </body> </html>Accédez au fichier dans votre navigateur local. Après avoir cliqué sur "Télécharger le fichier", une fenêtre apparaîtra vous permettant de sélectionner le fichier à télécharger :
Script de traitement JSP en arrière-planPremier nous définissons le fichier à stocker après le téléchargement. À l'emplacement sur le service, 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 fichier de configuration web.xml. , comme indiqué ci-dessous :
<web-app> .... <context-param> <description>文件上传地址</description> <param-name>file-upload</param-name> <param-value> c:\apache-tomcat-5.5.29\webapps\data\ </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 du package
- commons-fileupload.x.x.jar
dans le chemin de classe. L'adresse de téléchargement est : http://commons.apache.org/fileupload/.
FileUpload dépend de Commons IO, vous devez donc introduire le dernier - commons-io-x.x.jar
dans votre chemin de classe. L'adresse de téléchargement est : http://commons.apache.org/io/.
Lors du test de 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 le fichier ne peut pas être téléchargé avec succès.
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.*" %> <% File file ; int maxFileSize = 5000 * 1024; int maxMemSize = 5000 * 1024; ServletContext context = pageContext.getServletContext(); String filePath = context.getInitParameter("file-upload"); // 验证上传内容了类型 String contentType = request.getContentType(); if ((contentType.indexOf("multipart/form-data") >= 0)) { DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存中存储文件的最大值 factory.setSizeThreshold(maxMemSize); // 本地存储的数据大于 maxMemSize. factory.setRepository(new File("c:\temp")); // 创建一个新的文件上传处理程序 ServletFileUpload upload = new ServletFileUpload(factory); // 设置最大上传的文件大小 upload.setSizeMax( maxFileSize ); try{ // 解析获取的文件 List fileItems = upload.parseRequest(request); // 处理上传的文件 Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>JSP File upload</title>"); out.println("</head>"); out.println("<body>"); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { // 获取上传文件的参数 String fieldName = fi.getFieldName(); String fileName = fi.getName(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); // 写入文件 if( fileName.lastIndexOf("\") >= 0 ){ file = new File( filePath , fileName.substring( fileName.lastIndexOf("\"))) ; }else{ file = new File( filePath , fileName.substring(fileName.lastIndexOf("\")+1)) ; } fi.write( file ) ; out.println("Uploaded Filename: " + filePath + fileName + "<br>"); } } out.println("</body>"); out.println("</html>"); }catch(Exception ex) { System.out.println(ex); } }else{ out.println("<html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>No file uploaded</p>"); out.println("</body>"); out.println("</html>"); } %>
Ensuite, accédons à
via le navigateur, l'interface est comme indiqué ci-dessous 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. .