Datei hochladen und herunterladen
Rezeption:
1. Einreichungsmethode: Post
2. In der Form von Dateien befinden sich die Formularelemente im Formular hoch: <Eingabe type = "Datei" />
1. Geben Sie den Formulartyp an:
Standardtyp: engTepe = "Anwendung/x-www-form-rencoded"
Datei-Upload-Typ: Mehrfach-/Formdaten-Daten
FileUpload
Es wird üblicherweise in der Entwicklung der Datei -Upload -Funktion verwendet, und Apache bietet auch Datei -Upload -Komponenten!
Datei -Pload -Komponente:
1. Laden Sie den Quellcode herunter
2. Einführen Sie JAR -Dateien in das Projekt ein
commons-fileUpload-1.2.1.jar [Datei-Upload-Komponenten-Kern-JAR-Paket]
commons-i-i-1.4.jar [stickbezogene Werkzeugklassen für die Dateiverarbeitung]
verwenden:
Public Class UploadServlet erweitert HttpServlet {// Upload -Verzeichnis, Speichern der hochgeladenen Ressourcen public void dodget (httpServletRequest Request, httpServletResponse) löst ServletException aus, ioException {/************************************************************************************************************************************** factory = new diskFileItemfactory (); // 2. Datei -Upload Core Tool Class ServletFileUpload Upload upload = new ServletFileUpload (Factory); // 1. Setzen Sie die maximale Größe, die für eine einzelne Datei zulässig ist: 30MUpload.SetFileMax (30*1024*1024); // //. 80MUpload.Setsizemax (80*1024*1024); // 3. Setzen Sie die Codierung des Dateinamens des Upload-Formulars // entsprechen zu: Request.Setcharactercoding ("UTF-8"); Upload.SetheAeDerenCoding ("UTF-8"); // 3. Bestimmen: Ob das aktuelle Formular ein Datei-Upload-Formular ist, wenn (upload.ismultipartContent (Anfrage)) {// 4. Konvertieren Sie die angeforderten Daten in FileItem-Objekte und dann die Liste <DilesItem> uplolowded-data. Liste) {// Urteil: Normale Textdaten if (isformfield ()) {// normale Textdatenzeichenfolge Feldname = item.getfieldname (); // Formelementname String content = item.getString (); // Formelementname, entsprechende Daten //item.getString("UTF-8 "); Geben Sie das codierende System an.out.println (Feldname + "" + Inhalt);} // Datei hochladen (Dateistrom) ---> Hochladen in das Upload-Verzeichnis else {// Normale Textdaten-String-Feldname = item.getfieldname (); // Formelementname String name = item.getName (); // Dateiname String content = item.getString (); // Formelementname, entsprechender Datenzeichenfolge type = item.getContentType (); // Dateityp inputStream in = item.getInputStream (); // Datei -Stream hochladen/** 4. Dateiname umbenennen* Für verschiedene Benutzer readme.txt -Dateien möchten Sie nicht überschrieben werden! * Hintergrundverarbeitung: Fügen Sie dem Benutzer ein eindeutiges Tag hinzu!* /// a. Erstellen Sie zufällig eine eindeutige Tag -String -ID = uUid.randomuuid (). ToString (); // b. Spleißname mit Dateiname = id + "#" + name; // Erhalten Sie den Basis -Pfad -String -Path. Path = getServletContext (). GetRealPath ("/upload"); // Erstellen Sie die Zieldateidatei = Neue Datei (Pfad, Name); // Toolsklasse, Datei -Upload -Element.Write (Datei); Item.delete (); // Die temporäre Datei löschen, die vom System system.out.println ();}}} else {system.out.println ("Das aktuelle Formular ist keine Datei -Upload -Form gescheitert!");}} Catch (Ausnahme E) {E.printstacktrace (); IoException, unportedenCodingException {/* request.getParameter (""); // Get/postrequest.getQueryString (); // Die Daten erhalten, die von Get Request.GetInputStream () übermittelt werden; // Die Daten per Post erhalten*// ************************************************************************************************************************************************************************************************************************************************************************************************* Formular Data Stream InputStream in = request.getInputStream (); // 2. Konvertieren Stream InputStreamReader Instream = new InputStreamReader (in, "utf-8"); // 3. BufferedReader reader = neuer bufferedReader (Instrom); // Ausgabedatenstring Str = null; while ((str = reader.readline ())! HttpServletResponse -Antwort) löst ServletException aus, ioException {this.doget (request, Antwort);}}Fall:
Index.jsp
<body> <a href = "$ {pageContext.request.contextPath} /Upload.jsp"> Datei -Upload </a> <a href = "$ {pageContext.request.contextPath}/Dateiservlet? Method = Downlist"> Datei Download </a> </body> </body> </body>Upload.jsp
<body> <form name="frm_test" action="${pageContext.request.contextPath }/fileServlet?method=upload" method="post" enctype="multipart/form-data"><%--<input type="hidden" name="method" value="upload">--%>Username: <input type="text" name="userName"> <br/> Datei: <input type = "Datei" name = "file_img"> <br/> Eingabe type = "surenden" value = "subieren"> </form> </body>FileServlet.java
/*** Prozessdatei hochladen und download*@Author jie.yuan **/public class fileServlet erweitert HttpServlet {public void dodget (httpServletRequest Request, httpServletRespectRespect) löscht ServletException, IOExameter {// Anforderungsparameter unterscheiden: Unterschiedliche Operationstypen unterscheiden. . HttpServletResponse -Antwort) löst ServletException aus, ioException {try {// 1. Erstellen Sie Factory ObjectItemfactory Factory = new diskfileTemfactory (); // 2. Upload -Kern -Tool -Klasse -Klassen -ServletFileUpload -Datei -Größenlimit -Paramiere Upload.SetFilesimemax (10*1024*1024); // Einzeldateigrößenlimit hochladen.Setsizemax (50*1024*1024); // Gesamtdateigrößenlimit hochladen // Processing Chinese file encoding// Judge if (upload.isMultipartContent(request)) {// 3. Convert request data to list collection List<FileItem> list = upload.parseRequest(request);// traversal for (FileItem item : list){// Judgment: Normal text data if (item.isFormField()){// Get the name String name = item.getFieldName();// Get the value String value = item.getString();System.out.println(value);} // File form item else {/************ File upload****************/// a. Holen Sie sich den Dateinamen Zeichenzeichenname = item.getName (); // --- Behandeln Sie das Problem des Hochladens Dateinamen Duplicate --- // A1. Holen Sie sich die eindeutige Mark -String -ID = uUid.randomuuid (). ToString (); // a2. Spleißdateiname Name = ID + "#" + Name; // B. Holen Sie sich den Upload -Verzeichnis String basepath = getServletContext (). GetRealPath ("/upload"); // c. Erstellen Sie das Dateiobjekt, das hochgeladen werden soll, Dateidatei = neue Datei (Basepath, Name); // d. Item hochladen.Write (Datei); item.delete (); // Löschen Sie die temporäre Datei, die erzeugt wird, wenn die Komponente ausgeführt wird Verzeichnis und dann retten; Springen Sie zur Down.jsp -Liste, um // 1 anzuzeigen. Initialisieren Sie die Kartensammlungskarte <Dateiname mit eindeutigen Tags, Short -Dateiname>; Map <String, String> Dateinams = New HashMap <String, String> (); // 2. Holen Sie sich das Upload -Verzeichnis und die Dateinamen aller Dateien unter String BathPath = getServletContext (). GetRealPath ("/Upload"); // Verzeichnisdatei = new Datei (Badepath); // im Verzeichnis, alle Dateinamen String -Liste [] = file.list (); // traversal, intellig, wenn (liste! i ++) {// Vollname String Dateiname = Liste [i]; // Kurzname String shortName = fileName.substring (Dateiname.lastindexof ("#")+1); // capitulate FileName.put (FileName, Shortname);} // 3. request.getRequestDispatcher("/downlist.jsp").forward(request, response);}/*** 3. Handle downloads*/private void down(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Get the file name downloaded by the user (append data after the url address, get)String fileName = Request.GetParameter ("Dateiname"); Dateiname = new String (Dateiname.getBytes ("ISO8859-1"), "UTF-8"); // das Upload-Verzeichnis Pfad String Basepath = getServletContext (). Der Dateiname ist chinesischer, URL-Codierung muss durchgeführt werden. = -1; while ((len = in.read (b))! inPostentwicklung
Vorbereitungsarbeiten, Umweltkonstruktion:
1. Erstellen Sie einen Mailserver lokal
EasyMail Server, EyouMailServerSetup.exe
2. Erstellen Sie ein neues E -Mail -Konto
Zhang San schickte eine E -Mail an Li Si.
Schritt 1:
Erstellen Sie einen neuen Domänennamen: Tools, Servereinstellungen, geben Sie iTcast.com in das Feld "einzelner Domänenname" ein
Schritt 2:
Erstellen Sie ein neues E -Mail -Konto: [email protected]
3. Installieren Sie Foxmail
Konfigurieren Sie den E -Mail -Sendeserver (SMTP): localhost 25
E -Mail -Empfangserver (POP3): Localhost 110
Erstellen Sie ein neues Konto und Sie können E -Mails erhalten!
Beachten
Beachten
Wenn es sich um ein Webprojekt handelt, da Javaee mit E -Mail -Funktion ausgestattet ist, kann es Probleme geben!
Wir müssen unsere eigene Funktion für mail.jar -Datei verwenden! Sie müssen das Mail -Paket in Javaee löschen!
verwenden:
Für die Javamail -Entwicklung stellen Sie zunächst JAR -Dateien vor:
Activation.jar [Wenn Sie jdk1.6 oder höher verwenden, können Sie diese JAR -Datei nicht verwenden] mail.jar [Senden Sie das Kernpaket per E -Mail]/*** 1. Senden Sie eine normale E -Mail*@Author jie.yuan **/public class app_sendmail {@Testpublic void testsend () Ausnahme {/// 0. Mail -Parameter -Eigenschaften prop = new Properties (); prop.put ("mail.transport.protocol", "SMTP"); // Geben Sie den Protokoll Prop.put ("mail.smtp.host", "localhost") an; // host stmp.qq.comprop.put ("mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // Benutzerkennwortauthentifizierung prop.put ("mail.debug", "true"); // Debug -Modus // 1. Erstellen Sie eine Sitzung einer E -Mail -Sitzung = Sitzung.getDefaultInstance (prop); // 2. Erstellen Sie ein Mail -Körperobjekt (ganzes E -Mail -Objekt) mimemessage message = new Mimemessage (Sitzung); // 3. Setzen Sie die E -Mail -Körper -Parameter: //3.1 Title Message InternetAddress ("[email protected]")); // 3.5 Content Message.setText ("Hallo, es wurde erfolgreich gesendet! Text ..."); // einfache Klartext -E -Mail -Nachricht.Savechanges (); // E -Mail speichern (optional) // 4. Transport transfer = session.getTransport (); trans.connect ("Zhangsan", "888"); // E -Mail an trans.sendMessage (message, message.getAllRecipients ()); trans.close ();}}Mit Bildern
/*** E -Mail mit Bildressourcen*@Author jie.yuan **/public class app_2sendWithimg {// Initialisierungsparameter private statische Eigenschaften Prop; // Absender privat statischer InternetAddress sendman = null; static {prop = neue Eigenschaften (); // Geben Sie den Protokoll Prop.put ("mail.smtp.host", "localhost") an; // host stmp.qq.comprop.put ("mail.smtp.port", 25); // Geben Sie den Protokoll Prop.put an ("mail.smtp.port", 25); // Geben Sie den Protokoll Prop.put ("mail.smtp.port", "localhost") an; // host stmp.qq.comprop.put ("mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // Benutzerkennwortauthentifizierung prop.put ("mail.debug", "true"); // DEBUG -Modus try {sendman = new InternetAddress ("[email protected]");} catch (adressException e) {neue runTimeexception (e);}}@testpublic void testsend () wirft Ausnahme aus. Mimemessage (Sitzung); // 3. Setzen Sie Parameter: Titel, Absender, Empfänger, Zeit, Inhaltsnachricht. message.setsender (sendman); Message.setRecipient (recurtesitType.to, New InternetAddress ("[email protected]")); message.setSentDate(new Date());/************************ Set email content: Multifunction user email (related)**********************/// 4.1 Build a multifunctional email block MimeMultipart related = new MimeMultipart("related");// 4.2 Build multi-function mail block content = text on the left + image resource on the right Mimebodypart content = new mimebodypart (); mimebodypart ressource = new mimebodypart (); // Setzen Sie den spezifischen Inhalt: a. Ressourcen (Bild) String filepath = app_2sendWithimg.class.getResource ("8.jpg"). GetPath (); dataSource ds = new FileDataSource (neue Datei (filepath)); datahandler -Handler = new datahandler (DS); // Legen Sie den Ressourcennamen fest und verweisen Sie auf den fremden Schlüssel // den spezifischen Inhalt festlegen: b. Text content Session.getTransport (); trans.connect ("zhangsan", "888"); trans.sendMessage (message, message.getAllrecipients ()); trans.close ();}}Bilder + Anhänge
/*** 3. E -Mail mit Bildressourcen und Anhängen*@Author jie.yuan **/public class app_3imgandatta {// Initialisierungsparameter private statische Eigenschaften Prop; // Sender private statische statische Internetaddress Sendman = null; // Geben Sie den Protokoll Prop.put ("mail.smtp.host", "localhost") an; // host stmp.qq.comprop.put ("mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // Benutzerkennwortauthentifizierung prop.put ("mail.debug", "true"); // DEBUG -Modus try {sendman = new InternetAddress ("[email protected]");} catch (adressException e) {neue runTimeexception (e);}}@testpublic void testsend () wirft Ausnahme aus. Mimemessage (Sitzung); // 3. Setzen Sie Parameter: Titel, Absender, Empfänger, Zeit senden, Inhaltsnachricht. message.setsender (sendman); Message.setRecipient (recurtesitType.to, New InternetAddress ("[email protected]")); Message.SetSentDate (New Date ());/** Mailentwicklung mit Anhang (Bild)*/// Konstruieren Sie einen Gesamtpostblock MimemultiPart gemischt = new mimemultipart ("gemischt"); // -> Gesamtpost ist schnell, auf Message.SetContent (gemischt); // links: (Text + Bildressourcen) Mimbodypart MOMBODYPART = New Mimebodypart ()/Right -appress. rechts = new mimebodypart (); // auf Gesamtpostblock gemischt.addbodypart (links); mixed.addbodypart (rechts);/******* Bindung **********/String attr_path = this.getClass (). getResource ("a.docx"). getPath (); dataSource attr_ds = new FileDataSource (neue Datei (attr_path); datahandler attr_handler = newAnteAtaSource (new Datei (neue Datei); datahandler attr_handler = newAnteataSource (new Datei (neue Datei); datahandler attr_handler = new NEWATELS = NEW NEWATELE Datahandler (attr_ds); rechts.setDatahandler (attr_handler); rechts. ---> nach links eingestellt.SetContent (verwandt); // 4.2 Erstellen Sie den multi-funktionalen Mail-Block-Inhalt = Text auf der linken + Bildressource auf der rechten Mimebodypart-Inhalt = new mimebodypart (); Ressourcen (Bild) String filepath = app_3imgandatta.class.getResource ("8.jpg"). GetPath (); dataSource ds = new farredataSource (neue Datei (filepath)); datahandler -Handler = new DataHandler (DS); // Legen Sie den Ressourcennamen fest und verweisen Sie auf den fremden Schlüssel // den spezifischen Inhalt festlegen: b. Text content "888"); trans.sendMessage (message, message.getAllrecipients ()); trans.close ();}}Das obige ist der Beispielcode zum Hochladen und Herunterladen von Java -Dateien und zum Senden und Empfangen von E -Mails, die Ihnen vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!