Je ne dirai pas beaucoup de bêtises, je vais simplement vous publier le code. Le code spécifique est le suivant:
Le code HTML est le suivant:
<body> <input id = "fileid" type = "file" accept = "video / *; capture = caméra" onchange = "onfile (this)"> <input id = "btn" type = "button" value = "soume"> <script type = "text / javascript"> var xhr; fund onfile (filetoupl = new formData (); fd.Apprend (FileToup document.getElementById ('FileId'). Files [0]); xhr = new xmlhttprequest (); xhr.open ("post", "http: // localhost: 8889 / testup / upservlet"); // xhr.setRequestHeader ("contenu-type", "charset = utf-8"); xhr.send (fd); xhr.onreadystatechange = processReSponse;} fonction processPonse () {if (xhr.readystate == 4) {alert ("Télécharger End Data Stream End"); if (xhr.status == 200) {var infor = xhr.ResponSext; alert ("Server Side Response =" + infor);}}} </cript> </odody>Le code Java ressemble à ceci:
package com.yjm.up; importer java.io.file; import java.io.fileoutputStream; import java.io.ioexception; import java.io.inputStream; import java.util.list; import javax.servlet.servletException; import javax.servlet.http.httplesvlet; import; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.apache.commons.fileupload.fileitem; import org.apache.commons.fileupload.disk.diskfileitemfactory; Import org.apache.commons.fileupload.servlet.servletFileupload; public class upservlet étend httpservlet {public void dopost (httpservletRequest request, httpservraire réponse) lance Servlexception, ioexception {// obtenir le répertoire sauvegardé du fichier uploadé, stocker le fichier uploadé dans le fichier web-Codif Accès direct depuis le monde extérieur pour assurer la sécurité de la chaîne de fichiers téléchargée SavePath = this.getServletContex {System.out.println (SavePath + "Le répertoire n'existe pas, doit être créé"); // Créer le répertoire File.mkdir ();} // Les invites de message Invite String Message = ""; Essayez {// Utilisez le composant de téléchargement APACH DiskfileItemfactory (); // 2. Créez un fichier Téléchargez l'analyseur ServletFileUpload upload = new ServletFileupload (Factory); // résoudre le chinois brouillé upload.sethEnerencoding ("UTF-8"); // 3. la voie traditionnelle;} // 4. Utilisez l'analyseur de servletFileUpload pour analyser les données téléchargées. Le résultat de l'analyse renvoie une collection List <FichierItem>. Chaque fichieritem correspond à l'élément d'entrée d'un formulaire de formulaire Liste <FileItem> list = upload.PaSeRequest (request); for (FileItem Item: list) {// Si les données d'un élément d'entrée normal sont encapsulées dans le fichieritem if (item.isformField ()) {String name = item.getFieldName (); // résolvent le problème chinois brouillé des données des éléments d'entrée ordinaires, String Value = item.getString ("utf-8"); // valeur = news d'entrée ordinaire String (value.getBytes ("ISO8859-1"), "UTF-8"); System.out.println (nom + "=" + valeur);} else {// Si l'élément de fichier résume le fichier téléchargé // Obtenez le nom de fichier téléchargé, String filename = item.getName (); System.out.println (filename); if (firelenNEA filename.trim (). égaux ("")) {continuant;} // Remarque: Les noms de fichiers soumis par différents navigateurs sont différents. Certains navigateurs soumettent des fichiers avec des chemins, tels que: // c: /a/b/1.txt, et certains ne sont que des noms de fichiers simples, tels que: 1.txt // Traitez la partie Chemin du nom de fichier du fichier téléchargé obtenu, seule la pièce de nom de fichier est conservée FileName = FileName.SubString (FileName.LastIndexof ("//") + 1); // Get the Entrut Stream of the Itemforded Interded Infing Interded Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Infing Inforwing Entreving Interding Infing Infing Infing Inforwed Infing Inforwe dans = item.getInputStream (); // Créer un flux de sortie de fichier fileOutputStream out = new FileOutputStream (SavePath + "//" + filename); // créer un tampon de byte de tampon [] = new Byte [1024 * 1024]; // Créer un tampon de byte de tampon [] = New Byte [1024 * 1024]; // Créer un fichier de sortie de fichier FileoutStRecter) FileOutputStream (SavePath + "//" + FileName); // Créer un tampon d'octet de tampon [] = Nouveau octet [1024 * 1024]; // L'identifiant de déterminer si les données du flux d'entrée ont été lues sont int len = 0; // Loop pour lire le flux d'entrée dans le buffer. (Len = in.read (tampon))> 0 signifie qu'il y a encore des données dans while ((len = in.read (tampon))> 0) {// Utilisez le flux de sortie FileOutputStream pour écrire les données dans le tampon au répertoire spécifié (SavePath + "//" // + filen nom) out.write (tampon, 0, Len);} out.flush ();); in.close (); // Fermez le flux de sortie out.close (); // Supprimer le fichier temporaire généré lors du traitement du fichier Téléchargement élément.delete (); Message = "File Téléchargez avec succès!";}}} Catch (Exception e) {message = "File upload a échoué!"; e.printStackTrace ();} request.setAttribute ("Message", message); request.getRequestDispatcher ("/ message.jsp").Le package Java utilisé est téléchargé plus de 1g
Commons-fileupload-1.2.1.jar
Commons-io-1.3.2.jar
//xhr.setRequestHeader("content-ype" ,"Application/octet-tream ;charset=utf-8 "); Cela ne peut pas être ajouté