Das Datei -Upload ist eine sehr häufige Funktion auf der Website. Sie müssen die Anforderungsparameter direkt mithilfe von Servlet analysieren, um hochgeladene Dateien zu erhalten, was sehr problematisch ist. Daher verwenden Sie im Allgemeinen Apache Open Source Tool, Common-FileUpload. Dieses JAR -Paket finden Sie auf der offiziellen Website von Apache oder unter dem Lib -Ordner von Streben. Die Funktion des Uploads von Struts basiert auf dieser Implementierung.
Common-FileUpload hängt vom Common-IO-Paket ab. Sie müssen dieses Paket auch herunterladen. Importieren Sie es dann unter Ihren Projektpfad.
Verwenden Sie den Code wie folgt
Paket oop.hg.ytu.servlet; Import Java.io.file; importieren java.io.ioException; importieren java.io.inputstream; importieren java.util.list; importieren javax.servlet.servletException; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; import oop.hu.ytu.dao.uploaddomain; import org.apache.commons.FileUpload.FileItem; import org.apache.commons.FileUpload.disk.diskFileTemfactory; import org.apache.commons.FileUpload.servlet.servletFileUpload; Öffentliche Klasse Upload erweitert httpServlet { / *** Benutzer -Upload -Anforderung* / private statische endgültige long serialversionuid = 1l; public void dodget (httpServletRequest request, httpServletResponse -Antwort) löst ServletException aus, ioException {// String beschreiben = Anrequenz.GetParameter ("beschreiben"); DiskFileItemFactory factory = new diskFileItemFactory (); @SuppressWarnings ("Abschaltung") String path = request.getRealPath ("/upload"); // Festplattenpuffer Pathory.SetRepository (neue Datei (Pfad)); factory.setSizeThreshold (1024*1024); // Setzen Sie die Puffergröße servletFileUpload Upload = new ServletFileUpload (Fabrik); upload.setsizemax (-1); // Die Größe der Dateilimitgrenze einrichten, -1 Unbegrenzte Try {@SuppressWarnings ("Deaktiviert") LIST <DileItem> list = upload.ParSerequest (Anfrage); String va = null; für (FileItem -Element: Liste) {// String name = item.getFieldname (); if (item.isformfield ()) {// urteilen, ob es sich um einen Dateistrom va = item.getString ("utf-8"); // system.out.println (name+"="+va); /// Request.SetAttribute (Name, Wert); } else {String value = item.getName (); // überträgt den vollständigen Pfadnamen int start = value.lastIndexof ("//"); String Dateiname = value.substring (Start+1); // request.setAttribute (Name, Dateiname); InputStream in = item.getInputStream (); Uploaddomain dao = new Uploaddomain (); //item.write(new Datei (RealPath, Dateiname)); int index = Dateiname.lastIndexof ("."); String realFileName = Dateiname.substring (0, Index); String type = Dateiname.substring (Index+1); dao.insert (in, realfilename, type, va); // in die Datenbank eingeben}}} catch (Ausnahme e) {e.printstacktrace (); }} public void dopost (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, IOException {dodget (request, response); }} Hier bestimmen wir, ob es sich um den hochgeladenen Stream oder die Parameter im Formular handelt, z. B. das Senden von Informationen im Textfeld und dann in die Datenbank einfügen. Der Datenbankinsertionscode lautet wie folgt
Paket oop.hu.ytu.dao; importieren java.io.inputstream; Import Java.sql.Connection; importieren java.sql.preeParedStatement; importieren java.sql.resultset; Import oop.hg.ytu.utils.jdbcutils; /*** Datei -Upload -Unterstützung angeben* @Author Administrator**/öffentliche Klasse Uploaddomain {/*** Legen Sie die hochgeladene Datei in die Datenbank ein*/public void Insert (inputStream in, String -Dateiname, String -Typ, String -Typ) löst eine Ausnahme aus {// ein Bild in die Datenbankverbindung conn = null. PrepedStatement ps = null; ResultSet rs = null; System.out.println (beschreiben); Versuchen Sie {// 2. Stellen Sie eine Verbindung her conn = jdbcutils.getConnection (); // 3.. Erstellen Sie eine Anweisung Zeichenfolge SQL = "In FileUpload (Datei, Datei, Typ, DES) Werte (?,?,?,?)"; ps = conn.preparestatement (SQL); ps.setblob (1, in); Ps.SetString (2, Dateiname); Ps.SetString (3, Typ); ps.setstring (4, beschreiben); // 4. Führen Sie die Anweisung ps.executeUpdate () aus; in.close (); } endlich {jdbcutils.free (rs, ps, conn); }}} Sie können auf die Standardbegrenzung der Standarddatenbankpreise stoßen. Sie müssen die folgende Konfiguration unter my.ini im MySQL -Installationsverzeichnis ändern.
[Mysqld]
MAX_ALLAWED_PACKET = 64M
Das ist alles. Achten Sie natürlich auf das Codierungsformat. Laden Sie die Datei hoch und erledigen Sie sie. Eine andere Sache ist, dass einer meiner Spaltennamen beschrieben wird, und das Ergebnis ist, dass ich mit reservierten MySQL -Wörtern in Konflikt geraten bin und Informationen nicht eingefügt werden können. Sie müssen in Zukunft darauf achten.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.