Ici, j'utilise le téléchargement asynchrone des fichiers basés sur les servlet. Je ne dis pas beaucoup de bêtises et je télécharge simplement le code. . .
package com.future.zfs.util; importer java.io.file; import java.io.ioexception; import java.io.printwriter; import java.util.iterator; import java.util.list; import javax.servlet.servletException; import javax.servlet.http.httplesvlet; import; import; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.apache.commons.fileupload.fileItem; import org.apache.commons.fileupload.fileUpLadexception; import org.apache.commons.fileupload.fileuploadbase.SizeliteXechedEdException; import org.apache.commons.fileupload.disk.diskfileitemfactory; import org.apache.commons.fileupload.servlet.servletFilepload; @suppresswarning HttpServlet {final long max_size = 10 * 1024 * 1024; // Définissez le fichier maximum téléchargé sur 10m // la liste des formats de fichiers autorisés à être téléchargés final string [] allowType = new String [] {"jpg", "jpeg", "gif", "txt", "doc", "docx", "mp3", "wma", "m4a", "xls"}; public fileuploadServlet () {super (); } public void destre () {super.destroy (); } @Override Protected Void Service (HttpServletRequest Request, HttpServletResponse Response) lève ServletException, ioException {réponse.SetContentType ("Text / Html"); // Définissez le codage des caractères sur UTF-8, de sorte que le caractère chinois affiche la réponse.SetcharAtterencoding ("UTF-8"); // Instancier une usine de fichiers de disque dur pour configurer le composant de téléchargement ServletFileUpload diskfileItemfactory dfif = new diskFileItemfactory (); DFIF.SetSizethReshold (4096); // Définissez la taille de la mémoire utilisée pour stocker temporairement des fichiers lors du téléchargement de fichiers, voici 4k. Plus que la pièce existera temporairement dans le disque dur dfif.setRepository (nouveau fichier (request.getRealPath ("/") + "uploadTemp")); // Définit le répertoire où les fichiers temporaires sont stockés, le répertoire uploadTemp sous le répertoire racine du web // Instanciate la composante upload (dFifload); // Définissez la taille maximale de téléchargement SFU.SetSizEMax (Max_Size); Printwriter out = réponse.getWriter (); // Obtenez une liste de tous les champs de téléchargement de la liste des demandes FileList = null; try {fileList = sfu.parsErequest (request); } catch (fileUpLoAdException e) {// Gire la taille du fichier trop grande exception if (e instanceof sizelimiteXechedException) {out.println ("{message: 'la taille du fichier dépasse la taille spécifiée:" + max_size + "byte'}"); retour; } e.printStackTrace (); } // pas de téléchargement de fichiers if (fileList == null || fileList.size () == 0) {out.println ("{message: 'Veuillez sélectionner le fichier de téléchargement'}"); retour; } // Obtenez tous les fichiers téléchargés iterator fileitr = fileList.iterator (); // Loucle tous les fichiers while (fileitr.hasnext ()) {fileItem fileItem = null; String path = null; taille longue = 0; // obtient le fichier actuel fileItem = (fileItem) fileitr.next (); // ignore le champ de formulaire simple au lieu du domaine de fichier du domaine téléchargé (<input type = "text" />, etc.) if (fileItem == null || fileItem.isformField ()) {continuant; } // Obtenez le chemin complet du fichier path = fileItem.getName (); // obtient la taille de la taille du fichier = fileItem.getSize (); if ("" .equals (path) || size == 0) {out.println ("{message: 'Veuillez sélectionner le fichier de téléchargement'}"); retour; } // Obtenez le nom de fichier de la chaîne de path supprimée t_name = path.substring (path.lastIndexof ("//") + 1); // obtient l'extension de fichier (le nom complet sera obtenu sans extension) chaîne t_ext = t_name.substring (t_name.lastIndexof (".") + 1); // nier le type de fichier en dehors du format de fichier spécifié int allowflag = 0; int allowerExtCount = allowType.length; for (; allowflag <alloweDextCount; allowflag ++) {if (allowtype [allowflag] .equals (t_ext)) bris; } if (allowflag == alloweDextCount) {String Message = ""; for (allowFlag = 0; allowFlag <alloweDextCount; allowflag ++) {message + = "*." + allowType [allowflag] + ""; } out.println ("{message: 'Veuillez télécharger le type de fichier suivant" + message + "'}"); retour; } long maintenant = System.currentTimemillis (); // Générez le nom de fichier enregistré après le téléchargement en fonction du système Time String Prefix = String.ValueOf (maintenant); // Le chemin complet du fichier final enregistré est enregistré dans le répertoire de téléchargement sous le répertoire racine du web u_name = request.getRealPath ("/") + "upload /" + prefix + "." + t_ext; // le nom de fichier d'origine Path = request.getRealPath ("/") + "upload /" + path; try {// Enregistrer le fichier fileItem.write (nouveau fichier (path)); Response.setstatus (200); out.println ("{message: /" File Téléchargez avec succès. Enregistré comme: "+ Prefix +". "+ T_EXT +" Taille de fichier: "+ taille +" byte / "}"); } catch (exception e) {e.printStackTrace (); }}}} web.xml
<VerTlet> <Serplet-Name> FileUploadServlet </ Servlet-Name> <Servlet-Class> com.future.zfs.util.fileuploadservlet </ servlet-Class> </ Servlet> <Servlet-Mapping> <Servlet-Name> FileuploadServlet </Servlet-Name> <Url-Pattern>
Page de téléchargement
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <adread> <meta http-equiv = "contenu-type" contenu = "Text / html; Charset = utf-8"> <title> insert le titre ici </ title> <script type = "text / javascript" src = "js / jquery.js"> </ script> <script type = "text / javascript" src = "js / ajaxfileupload.js"> </ script> <script type = "text / javaScript"> function ajaxfileupload () {$ ("# chargeing") .ajaxStart (function () {$ (this). Image lorsque vous démarrez le téléchargement du fichier.ajaxComplete (function () {$ (this) .hide ();}); // masquer l'image après le téléchargement du fichier. Space <input type = "file" id = "file" name = "file" /> dataType: 'json', // Le type de valeur de retour est généralement défini sur JSON Success: fonction (données, statut) // Le serveur répond avec succès à la fonction de traitement {//alert(data.message) ;// les données dans le message est la variable membre $ ('# myspan') définie dans Struts2. If (typeof (data.error)! = 'Undefined') {if (data.error! = '') {//Alert(data.error); $ ('# myspan'). html (data.sessage); } else {//alert(data.Message); $ ('# myspan'). html (data.sessage); }}}, erreur: fonction (données, statut, e) // fonction de gestion de la réponse de réponse du serveur {// alert (e); $ ('# myspan'). html (e); }}) return false; } comment id = "myspan"> </ span> <br/> <input type = "file" id = "file" name = "file" /> <br /> <input type = "button" value = "upload" onclick = "return ajaxfileupload ();"> <a href = "filedownloadServlet? Il convient de noter que lorsque vous utilisez AjaxFileUpload pour télécharger en fonction de Servlet, vous devez définir Response.SetContentType ("Text / HTML"); Bien que DataType: 'JSON' soit défini sur JSON, vous devez toujours définir Response.SetContentType ("Text / Html"); Sinon, les données renvoyées par le serveur ne peuvent pas être obtenues et une boîte de dialogue apparaîtra.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.