Téléchargement et téléchargement de fichiers
réception:
1. Méthode de soumission: Post
2. Il y a des éléments de formulaire de fichiers dans le formulaire: <entrée type = "fichier" />
3. Spécifiez le type de formulaire:
Type par défaut: ENCTYPE = "Application / X-WWW-FORM-URLENCODED"
Type de téléchargement de fichiers: multipartiner / formulaire de forme
Fileupload
Il est couramment utilisé dans le développement de la fonction de téléchargement de fichiers, et Apache fournit également des composants de téléchargement de fichiers!
Composant de charge de fichiers:
1. Téléchargez le code source
2. Introduire des fichiers JAR dans le projet
Commons-fileupload-1.2.1.jar [package Jar de base du composant de téléchargement de fichiers]
Commons-io-1.4.jar [Classes d'outils liées à la broderie pour le traitement de fichiers]
utiliser:
classe publique UploadServlet étend HttpServlet {// Upload Directory, Enregistrez les ressources téléchargées publiques void doget (httpservletRequest Response HttpservletResponse) lance le composant de téléchargement de fichiers: File-téléchargement de fichiers ************************** factory = new DiskFileItemFactory (); // 2. Créer un fichier upload Core Tool Classe servletFileUpload upload = new ServletFileUpload (Factory); // 1. Définissez la taille maximale autorisée pour un seul fichier: 30Mupload.SetFileSizEMAX (30 * 1024 * 1024); // 2. Régler la taille totale autorisée pour le fichier Upload Formulaire: 80Mupload.SetSizEMax (80 * 1024 * 1024); // 3. Définissez le codage du nom de fichier du formulaire de téléchargement // équivalent à: request.SetcharAtterencoding ("utf-8"); upload.setheDerencoding ("utf-8"); // 3. Déterminez: si le formulaire actuel est un formulaire de téléchargement de fichiers if (upload.ismulTipartContent (request)) {// 4. Converti les données demandées en fichiers FileItem, puis encapsulent la liste <FichierItem> list = upload.parserequest (request); // Traversal: Get Every Upled data pour (Fileitem item: request: list) {// jugement: données de texte normal if (item.isformField ()) {// chaîne de données de texte normale fieldName = item.getFieldName (); // Nom de l'élément de formulaire String contenu = item.getString (); // Nom de l'élément de formulaire, données correspondantes //item.getString("utf-8 "); Spécifiez le System.out.out.println (FieldName + "" + Contenu);} // File de téléchargement (Stream de fichiers) ---> Téléchargez dans le répertoire de téléchargement Else {// String de données de texte normal FieldName = item.getFieldName (); // Nom de l'élément de formulaire Nom de chaîne = item.getName (); // Nom de fichier String contenu = item.getString (); // Nom de l'élément de formulaire, Type de chaîne de données correspondant = item.getContentType (); // Type de fichier InputStream dans = item.getInputStream (); // Télécharger le flux de fichiers / ** 4. Renommer le nom du fichier * pour différents utilisateurs Readme.txt, ne veulent pas être écrasés! * Traitement d'arrière-plan: ajoutez une balise unique à l'utilisateur! * /// a. Générez de manière aléatoire une chaîne de balise unique id = uuid.randomuuid (). ToString (); // b. Splice Nom avec Nom de fichier = id + "#" + name; // Obtenez la chaîne de base de base PATH PATH = GetServletContext (). GetRealPath ("/ upload"); // Créer le fichier de fichier cible Fichier = nouveau fichier (path, name); // classe d'outils, File upload item.write (fichier); Item.delete (); // Supprimer le fichier temporaire généré par le système System.out.println ();}}} else {System.out.println ("Le formulaire actuel n'est pas un formulaire de téléchargement de fichiers, le traitement a échoué!");}} Catch (exception E) {e.printStackTrace ();}} // implémentation manuelle du processus privé Void upload (htTPSerSerflet) IoException, UnsupportDenCcodingException {/*Request.getParameter (""); // get / postRequest.getQueryString (); // obtient les données soumises par get request.getInputStream (); // Obtenez les données soumises par post * // ****************** Obtenez manuellement les données du formulaire de téléchargement de fichiers **************** /// 1. Obtenez Form Data Stream InputStream dans = request.getInputStream (); // 2. Convertir Stream InputStreamReader InsideRam = new inputStreamReader (in, "utf-8"); // 3. BufferedReader Reader = new BufferedReader (InsideRam); // String de données de sortie str = null; while ((str = reader.readline ())! = Null) {System.out.println (str);} // close Reader.close (); instream.close (); in.close ();} public void dopost (httpsservlest request, HttpServletResponse Response) lève ServletException, ioException {this.DoGet (demande, réponse);}}Cas:
Index.jsp
<body> <a href = "$ {pagecontext.request.contextPath} /upload.jsp"> File upload </a> <a href = "$ {pagecontext.request.contextPath} / fileservlet? Method = downList"> Fichier Download </a> </ body>Upload.jsp
<body> <form name = "frm_test" action = "$ {pageContex <input type = "file" name = "file_img"> <br/> input type = "soumi" value = "soumi"> </ form> </body>Fileservlet.java
/ *** Process File upload and download * @author jie.yuan ** / public class fileserservlet étend httpservlet {public void doget (httpservletRequest request, httpsservletResponse réponse) lance le servletException, ioException {// get les demandes paramètres: if si différents types de fonctionnalités string mode = request.getParamet (""); ("upload" .equals (méthode)) {// téléchargement téléchargement (demande, réponse);} else if ("downlist" .equals (méthode)) {// entre la liste de téléchargement. HttpServletResponse Response) lève ServletException, ioException {try {// 1. Créer un objet d'usine FileItemFactory Factory = new DiskFileItemFactory (); // 2. Fichier Upload Core Tool Class de servletFileUpload upload. // Limite de taille de fichier unique upload.setsiSizEMAX (50 * 1024 * 1024); // Limite de la taille du fichier total upload.sethEnerEncoding ("UTF-8"); // Traitement Encoding de fichiers chinois // Juger if (upload.ismulTipartContent (demande)) {// 3. Converti les données de la demande à la liste de collecte List <FequeItem> list = upload.PaSerequest (request); // Traversal pour (FileItem item: list) {// Jugement: Nom de texte normal. Value = item.getString (); System.out.println (valeur);} // Formulaire de fichier élément else {/ ************** File upload **************** /// a. Obtenez le nom de fichier String name = item.getName (); // --- gérez le problème du téléchargement de nom de fichier Duplicate --- // a1. Obtenez la chaîne de marque unique id = uuid.randomuuid (). ToString (); // a2. Splice Nom du fichier Nom = id + "#" + name; // b. Obtenez la chaîne de téléchargement de téléchargement BasEpath = getServletContext (). GetRealPath ("/ upload"); // c. Créez l'objet de fichier à télécharger fichier fichier = nouveau fichier (baspath, nom); // d. Télécharger item.write (fichier); item.delete (); // Supprimer le fichier temporaire généré lorsque le composant exécute}}}}} catch (exception e) {e.printStackTrace ();}} / *** 2. Entrez la liste de téléchargement * / private void downlist (httpServleRequest request, httpservletResponse réponse) lance le nom de FileSException, ioException {// Implementation Idea: First The FileSException dans la hausse, ioException {// Implémentation Idea répertoire, puis enregistrer; Sautez sur la liste Down.jsp pour afficher // 1. Initialisez la carte de la collection MAP <Nom de fichier contenant des balises uniques, le nom de fichier court>; map <string, string> fileNames = new HashMap <String, String> (); // 2. Obtenez le répertoire de téléchargement et les noms de fichiers de tous les fichiers sous String bathpath = getServletContext (). GetRealPath ("/ upload"); // file de fichier du répertoire = nouveau fichier (Bathpath); // dans le répertoire, tous les noms de file Liste de chaîne [] = file.list (); // traversal, encapsulat if (list! = Nullthingy List.Legth> 0) {pour (int i = 0; i ++) {// nom complet String filename = list [i]; // nom short string shortname = filename.substring (filename.lastexof ("#") + 1); // encapsule filenameS.put (filename, shortname);}} // 3. request.getRequestDispatcher ("/ downlist.jsp"). request.getParameter ("FileName"); filename = new String (filename.getBytes ("iso8859-1"), "utf-8"); // Obtenez le répertoire de téléchargement String BasEpath = getServletContex Le nom de fichier est chinois, l'encodage d'URL doit être effectué filename = urlencoder.encode (nom de fichier, "utf-8"); // définir l'en-tête de réponse pour téléchargement.sethEader ("contenu-disposition", "pièce jointe; filename =" + filename); // obtenir la réponse Byte Stream Outpstream Out = Response. = -1; while ((len = in.read (b))! = -1) {out.write (b, 0, len);} // close out.close (); in.close ();} public void doPost (demande httpservletRequest, réponse httpservletResponse) lance ServletException, ioException {this.doget (demande, réponse);}}Développement de courrier
Travaux de préparation, construction de l'environnement:
1. Créez localement un serveur de messagerie
Easymail Server, eyoumailServersEtup.exe
2. Créez un nouveau compte de messagerie
Zhang San a envoyé un e-mail à Li SI.
Étape 1:
Créer un nouveau nom de domaine: outils, paramètres du serveur, entrez itast.com dans la zone de nom de domaine unique
Étape 2:
Créez un nouveau compte de messagerie: [email protected]
3. Installez Foxmail
Configurer le serveur d'envoi d'e-mail (SMTP): localhost 25
Serveur de réception par e-mail (POP3): localhost 110
Créez un nouveau compte et vous pouvez recevoir des e-mails!
Avis
Avis
S'il s'agit d'un projet Web, car Javaee est livré avec la fonction de messagerie, il peut y avoir des problèmes!
Nous devons utiliser notre propre fonction de fichier mail.jar! Vous devez supprimer le package de courrier dans Javaee!
utiliser:
Pour le développement de Javamail, introduisez d'abord les fichiers JAR:
Activation.jar [Si vous utilisez JDK1.6 ou supérieur, vous ne pouvez pas utiliser ce fichier de jar] mail.jar [Envoyer un package de base par e-mail] / *** 1. Envoyer un e-mail normal * @author jie.yuan ** / classe publique App_sendmail {@TestPublic Void TestSend () Throws Exception {// 0. Paramètres de courrier Properties Prop = new Properties (); prop.put ("Mail.transport.protocol", "smtp"); // Spécifiez le protocole Prop.put ("Mail.smtp.host", "localhost"); // HOT STMP.QQ.COMPROP.PUT ("Mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // User Motway Authentication Prop.put ("mail.debug", "true"); // Mode de débogage // 1. Créez une session d'une session de messagerie Session = session.getDefaultInstance (PROP); // 2. Créer un objet de corps de messagerie (objet e-mail entier) MIMEMESSAGE MESSAGE = NOUVEAU MIMEMESSAGE (SESSION); // 3. SET des paramètres du corps de messagerie: //3.1 Title Message.SetSubject ("My First Email"); // 3.2 Email Envoi Message Time.SentDate (new Date ()); // 3.3 Sender Message.SetSender (New InternetAddress ("[email protected]")); // 3.4 Receiver Message.SetReciment (destinataire de la gueule InternetAddress ("[email protected]")); // 3.5 Message.SeTText ("Bonjour, il a été envoyé avec succès! Text ..."); // Message électronique en texte brut simple.SaveChanges (); // Enregistrer le courrier électronique (facultatif) // 4. Envoyer un transfert de transport = session.getTransport (); trans.connect ("Zhangsan", "888"); // Envoyer du courrier à trans.sendMessage (message, message.getAllRcipients ()); trans.close ();}}Avec des photos
/ *** e-mail avec des ressources d'image * @author jie.yuan ** / classe publique app_2sendwithimg {// Paramètres d'initialisation Propriétés statiques privées Prop; // Sender Static privé Internetaddress Sendman = null; static {prop = New Properties (); prop.put ("Mail.transport.protoCol", "smtp"); // Spécifiez le protocole Prop.put ("Mail.smtp.host", "localhost"); // HOT STMP.QQ.COMPROP.PUT ("Mail.smtp.port", 25); // Spécifiez le protocole Prop.put ("Mail.smtp.port", 25); // Spécifiez le protocole Prop.put ("Mail.smtp.port", "LocalHost"); // HOT STMP.QQ.COMPROP.PUT ("Mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // User Motway Authentication Prop.put ("mail.debug", "true"); // Mode de débogage essayez {sendman = new InternetAddress ("[email protected]");} catch (AddressException e) {Throw New RuntimeException (e);}} @ testpublic void testSend () lance une exception {// 1. Créer une session de session par courrier = Session.getDefaultInstance (proP); // 2. MimeMessage (session); // 3. Définir les paramètres: titre, expéditeur, destinataire, temps d'envoi, message de contenu.SetSubject ("avec image d'image"); Message.SetSender (Sendman); Message.SetReccipient (destinataireType.to, nouveau InternetAddress ("[email protected]")); Message.SetSentDate (new Date ()); / ************************ RÉGLAGE COMMENTAIRE Contenu: MultiFonction Utilisateur Email (lié) ************************ // / 4.1 Créez un bloc de messagerie multifonctionnel MIMEMULPART LELT = NOUVEAU MIMEMMULPART ("CONNEXE"); / 4.2 Création de Multi-Function Mail Blocd Content = new MIMEBODYPART (); MIMEBODYPART RESSOURCE = NEW MIMEBODYPART (); // Définir le contenu spécifique: a. Resource (image) chaîne filepath = app_2sendwithimg.class.getResource ("8.jpg"). GetPath (); dataSource ds = new FiledataSource (nouveau fichier (filepath)); dataHandler handler = new Datahandler (ds); Resource.setDatahandler (handler); Resource.setContentid (. // Définissez le nom de la ressource et référence à la touche étrangère // Définissez le contenu spécifique: b. Text contenu.setContent ("<img src = 'cid: 8.jpg' /> ok!", "Text / html; charset = utf-8"); liked.addbodyPart (contenu); liéd.addbodyPart (ressource); / *********** 4.3 Ajouter les e-mails complexes. session.getTransport (); trans.connect ("zhangsan", "888"); trans.sendMessage (message, message.getAllRescipents ()); trans.close ();}}Images + pièces jointes
/ *** 3. Email avec des ressources d'image et des pièces jointes * @author jie.yuan ** / classe publique app_3imgandatta {// Paramètres d'initialisation Propriétés statiques privées; // // Spécifiez le protocole Prop.put ("Mail.smtp.host", "localhost"); // HOT STMP.QQ.COMPROP.PUT ("Mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // User Motway Authentication Prop.put ("mail.debug", "true"); // Mode de débogage essayez {sendman = new InternetAddress ("[email protected]");} catch (AddressException e) {Throw New RuntimeException (e);}} @ testpublic void testSend () lance une exception {// 1. Créer une session de session par courrier = Session.getDefaultInstance (proP); // 2. MimeMessage (session); // 3. Définir les paramètres: titre, expéditeur, destinataire, temps d'envoi, message de contenu.SetSubject ("mail avec image"); Message.SetSender (Sendman); Message.SetReccipient (destinataireType.to, nouveau InternetAddress ("[email protected]")); Message.SetSentDate (new Date ()); / ** MAIL DÉVELOPPEMENT avec pièce jointe (image) * /// Construire un bloc de courrier total mimemultupar mixte = new MIMEMULTIPART ("mixte"); // -> Total Mail est rapide, défini sur Message.SetContent (Mixed); // gauche: (Text + Ressource) MIMEBODYPART (); // réglé sur Total Mail Block Mixed.AddBodyPart (à gauche); mixtes.addbodyPart (à droite); / ******* Pièce jointe ********** / string att_path = this.getClass (). getResource ("a.docx"). getPath (); dataSource att_ds = newataSource (nouveau fichier (att_path)); dataHandler att_handler = news Datahandler (att_ds); right.setDatahandler (att_handler); droite.setFileName ("a.docx"); / ************************ Contenu de l'e-mail: MultiFonction User e-mail (associé) ********************** /// 4.1 COMMUILLE UN MULTIFUNCTION MIMEMULCULTAT STRIED = NEWMEMMULTAT (") ---> Définir sur la gauche.setContent (lié); // 4.2 Créez le bloc de bloc de courrier multifonctionnel CONTENU = Texte sur la ressource d'image gauche + sur le contenu MIMEBODPART droit = new MIMEBODYPART (); MIMEBODYPART RESSOURCE = new MIMEBODYPART (); // Définir le contenu spécifique: a. Resource (image) chaîne filepath = app_3imgandatta.class.getResource ("8.jpg"). GetPath (); dataSource ds = new FileDataSource (nouveau fichier (filepath)); datahandler handler = roesal.setSetContentid (Resource.SetDatahandler (Handler); Resource.SetContentid ("8.jpg"); // Définissez le nom de la ressource et référence à la touche étrangère // Définissez le contenu spécifique: b. Text contenu.setContent ("<img src = 'cid: 8.jpg' /> ok!", "Text / html; charset = utf-8"); liked.addbodyPart (contenu); liked.addbodyPart (ressource); // 5. "888"); trans.sendMessage (message, message.getAllrecicipients ()); trans.close ();}}Ce qui précède est l'exemple de code pour télécharger et télécharger des fichiers Java et envoyer et recevoir des e-mails qui vous sont présentés. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!