Die Beispiele in diesem Artikel teilen die Datei hochladen und Java -Implementierungscode für Ihre Referenz herunterladen. Der spezifische Inhalt ist wie folgt
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 -Datei hochladen Core Tool Class ServletFileUpload upload = new ServletFileUpload (Factory); // 1. Legen Sie die maximale Größe ein, die für eine einzelne Datei zulässig ist: 30m Upload.SetFileMax (30*1024*1024); // 2. Legen Sie die Gesamtgröße ein, die für das Datei -Upload -Formular zulässig ist: 80 m hochladen.setsizemax (80*1024*1024); // 3.. Setzen Sie die Codierung des Dateinamens Upload-Formular // entsprechen zu: Request.setcharactercoding ("UTF-8"); upload.SetheaDerencoding ("utf-8"); // 3.. Bestimmen Sie: Ob das aktuelle Formular ein Datei -Upload -Formular ist, wenn (upload.ismultiPartContent (Anfrage)) {// 4. Die angeforderten Daten in FileItem -Objekte konvertieren und dann die Liste <FileItem> listem> list = upload.parsequest (Anfrage) zusammenfassen; // TRAVERSAL: Erhalten Sie jede hochgeladene Daten für (FileItem item: list) {// Urteilsvermögen: Normale Textdaten if (isformfield ()) {// Normale Textdaten -String -Feldname = item.getFieldname (); // Formelementname String content = item.getString (); // Formelementname, entsprechende Daten //item.getString("UTF-8 "); Geben Sie das Codierungssystem an.out.println (FieldName + "" + Inhalt); } // Datei hochladen (Dateistream) ---> Hochladen in das Upload-Verzeichnis else {// Normale Textdatenzeichenfolge 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 wird umbenannt* Für verschiedene Benutzer readme.txt -Dateien möchten Sie nicht überschrieben werden! * Hintergrundverarbeitung: Fügen Sie dem Benutzer ein eindeutiges Tag hinzu! */ // A. Erzeugen Sie zufällig eine eindeutige Tag -String -ID = uUid.randomuuid (). ToString (); // B. Spleißname mit Dateiname = ID + "#" + Name; // Holen Sie sich den Basis -Pfad -String -Pfad upload upload upload ("/upload"); // Erstellen Sie die Zieldateidatei = Neue Datei (Pfad, Name); // Werkzeugklasse, Datei hochladen item.write (Datei); item.delete (); // die temporäre Datei löschen, die vom System system.out.println () generiert wird; }}} else {System.out.println ("Das aktuelle Formular ist kein Upload -Formular für Datei, die Verarbeitung fehlgeschlagen!"); }} catch (Ausnahme e) {e.printstacktrace (); }} // Manuelle Implementierung des Prozesses private void Upload (httpServletRequest -Anforderung) löst IOException aus, ununterbeuterdeCodingException { /* request.getParameter (""); // Get/post Request.getQueryString (); // Die Daten erhalten, die von Get Request.GetInputStream () übermittelt werden; // Erhalten Sie die Daten per Post*//**************************************************** Formular Data Stream InputStream in = request.getInputStream (); // 2. Konvertieren Stream InputStreamReader Instream = new InputStreamReader (in "utf-8"); // 3. BufferedReader Reader = neuer BufferedReader (Instrom); // Datenstring Ausgabe von String str = null; while ((str = reader.readline ())! = null) {System.out.println (str); } // Data String str = null ausgeben; while ((str = reader.readline ())! = null) {System.out.println (str); } // schließen leser.close (); instream.close (); in.close (); } public void dopost (httpServletRequest Request, 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? methode = upload" methode = "post" en en en en en en en en en en en en enhTtype Datei: <input type = "Datei" name = "file_img"> <br/> <Eingabe type = "sure" value = "subieren"> </form> </body>FileServlet.java
/** * Datei hochladen und herunterladen * @Author jie.yuan * */public class fileServlet erweitert HttpServlet {public void dagget (httpServletRequest Request, httpServletRespespectRect) löst ServletException aus, IOExameter {// Antragsanlagen -Parameter: Distinguish -Veranlagungstypen = Anrequenz. if ("upload" .equals (Methode)) {// Upload Upload (Anfrage, Antwort); } else if ("Downlist" .Equals (Methode)) {// Geben Sie die Download -Liste Downlist (Request, Antwort) ein; } else if ("down" .equals (methode)) {// Download Down (Request, Antwort); }} / ** * 1. Upload * / private void Upload (httpServletRequest -Anforderung, httpServletResponse -Antwort) löscht ServletException, ioException {try {// 1. // 2. Datei hochladen Core Tool Class ServletFileUpload Upload = new ServLetFileUpload (Fabrik); // Größenlimitparameter hochladen.SetFilesimemax (10*1024*1024); // Einzeldateigrößenlimit hochladen.Setsizemax (50*1024*1024); // Gesamtdateigrößenlimit hochladen // Verarbeitung chinesischer Dateicodierung // Richter if (upload.ismultiPartContent (Anfrage)) {// 3. Anforderungsdaten konvertieren, um die Erfassungsliste <DileItem> liste = Upload.ParSequest (Anfrage) zu listen; // traversal für (FileItem Element: Liste) {// Urteilsvermögen: Normale Textdaten if (item.formfield ()) {// den Namen String name = item.getfieldName () abrufen; // den Wert Zeichenfolge value = item.getString () abrufen; System.out.println (Wert); } // Dateiformelement else { / ************ Datei Upload ************** / // a. Holen Sie sich den Dateinamen Zeichenzeichenname = item.getName (); // --- Behandeln Sie das Problem des Hochladens Dateinamen doppelter Name ---- // 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.Write (Datei) hochladen; item.delete (); // Löschen Sie die temporäre Datei, die erzeugt wird, wenn die Komponente ausgeführt wird }} / *** 2. Geben Sie die Download -Liste ein* / private void downlist (httpServletRequest -Anforderung, httpServletResponse -Antwort). Springen Sie zur Down.jsp -Liste, um // 1 anzuzeigen. Initialisieren Sie die Kartensammlungskarte <Dateiname mit eindeutigen Tags, Short -Dateiname>; Karte <string, string> fileNames = new HashMap <String, String> (); // 2. Erhalten Sie das Upload -Verzeichnis und die Dateinamen aller Dateien unter String BathPath = getServletContext (). GetRealPath ("/upload"); // Verzeichnisdatei = Neue Datei (BadetPath); // Im Verzeichnis alle Dateinamen String -Liste [] = file.list (); // traversal, inkapsel if (list! // Kurzname String mortname = Dateiname.substring (Dateiname.lastindexof ("#")+1); // capsulate Dateinamen.put (Dateiname, Shortname); }} // 3.. Save to Request Domänenanforderung. // 4. Vorwärtsanforderung } / *** 3. Handle -Download* / private void Down (httpServletRequest -Anforderung, httpServletResponse -Antwort) löscht ServletException, IOException {// den vom Benutzer heruntergeladenen Dateinamen abrufen. Dateiname = new String (Dateiname.getBytes ("ISO8859-1"), "UTF-8"); // Holen Sie sich den Upload -Verzeichnis -Pfad String basepath = getServletContext (). GetRealPath ("/upload"); // Erhalten Sie einen Dateistrom -InputStream in = new FileInputStream (neue Datei (Basepath, Dateiname)); // Wenn der Dateiname chinesisch ist, muss URL-Codierung durchgeführt werden, fileName = urlencoder.encode (Dateiname, "UTF-8"); // Setzen Sie den Antwortheader für Download-Antwort. // Antwort Byte Stream OutputStream out = response.getOutputStream (); Byte [] B = neues Byte [1024]; int len = -1; while ((len = in.read (b))! = -1) {out.write (b, 0, len); } // schließen.close (); in.close (); } public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, ioException {this.doget (Request, Antwort); }}Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.