Der Blogger arbeitet kürzlich an einem Intranet -Projekt, bei dem auf externe Daten intern zugegriffen werden können. Extern kann jedoch nicht auf interne Daten zugreifen, wodurch auch die Datei nicht hochgeladen werden kann. Daher verfolgt der Blogger einen anderen Ansatz und erstellt einen Ordner auf dem lokalen Server speziell zum Speichern von hochgeladenen Daten.
Umgebung: JDK, Tomcat
1. Laden Sie Dateien in die Rezeption hoch (laden Sie AJAX hoch)
<Eingabe type = "Datei" name = "Annexurl" id = "Annexurl" multiple = "multiple"/>
Wobei multiple = "multiple" so eingestellt ist, dass mehrere Dateien hochgeladen werden
Funktion uploadFile () {var files = document.getElementById ("Annexurl"). Dateien; if (Dateien.length! = 0) {var formData = new FormData (); für (var i = 0; i <files.length; i ++) {var file = files [i]; FormData.Append (Datei.name, Datei); } $ .ajax ({url: 'cdc/public/saveFiles', Typ: 'post', cache: false, data: formData, // Dieser Parameter ist einzigartig für jQuery und ist nicht serialisiert, da wir nicht in JSON -Format übergeben werden müssen. durch ContentType: False, Erfolg: Funktion (Daten) {save (data.data); } else {save (); }}} Hier müssen wir das FormularData -Objekt verwenden, um das Dateiobjekt zu verkapulieren. Mit der Methode Save () wird das nach dem Hochladen zurückgegebene Dateipfad und in der Datenbank für einen einfachen Download gespeichert.
2. Empfangen Sie Dateien im Hintergrund und laden Sie sie auf den Server hoch
// Mehrere Dateien hochladen, eine Sammlung von Objekten (Anhangsadresse, Name) @RequestMapping (value = "SaveFiles", method = requestMethod.post) @ResponseBody public JsonObject SaveFiles (httpServletrequest -Anforderung, HttpServletRespon) {JsonObject JsonObject = New JsonObject (); try {request.setcharactercoding ("utf-8"); } catch (unportedenCodingException e) {e.printstacktrace (); } Collection <Teil> parts = null; try {part = request.getParts (); } catch (ioException e) {e.printstacktrace (); } catch (ServletException e) {e.printstacktrace (); } Iterator <Teil> iterator = parts.Ireator (); // Sammlung von Namen, zurückgegeben in die Vordergrundliste <string> list = new ArrayList <> (); while (iterator.hasNext ()) {part teile = iterator.next (); // Generieren Sie den tatsächlichen gespeicherten realen Dateinamen (eindeutig) // Ich weiß nicht, warum das Datei -Upload den erhaltenen Dateinamen enthalten muss, andernfalls ist die Syntax des Dateinamens, des Verzeichnisnamens oder des Volumen -Tags falsch. Es gibt keine solche Einschränkung im Bild -Upload // Dateiname, speichern Sie die Datenbank und verwenden Sie sie, um den String name = part.getName () anzuzeigen. String realname = uUid.randomuuid (). ToString () + name; list.add (name + "&&" + realname); ///home/tomcat/apache-tomcat-9.0.1/files string realpath = "d:" + file.separator + "apache-tomcat-8.5.15" + file.separator + "Dateien"; // String realpath = "c:" + file.separator + "xhj224" + file.separator + "Software" + Datei // String realpath = file.separator + "home" + file.separator + "tomcat" + file.separator + "Apache-tomcat-9.0.1" + Datei.Sesparator + "Dateien"; Datei Datei = neue Datei (RealPath); // Wenn das Verzeichnis nicht vorhanden ist (! Datei.isdirectory ()) {// Erstellen Sie die Datei -Upload -Verzeichnisdatei.mkdirs (); } // Der reale Pfad zum Dateispeicherzeichenfolge filepath = realPath + file.separator + realname; try {part.write (filepath); } catch (ioException e) {e.printstacktrace (); }} jsonObject.put ("Daten", Liste); return JsonObject; } Die List -Sammlung fügt eine vom Dateinamen und den reale Dateinamen gespleißte Zeichenfolge hinzu, die später benötigt wird. RealName besteht darin, Konflikte zwischen mehreren hochgeladenen Dateinamen zu verhindern. RealPath ist der Dateisparpad. Verschiedene Betriebssysteme haben unterschiedliche Wege. RealPath wird am besten unter Tomcat platziert, um die Projektportierung zu erleichtern.
Wobei Datei.Separator der Pfadabscheider ist, der automatisch identifizieren kann, welches Betriebssystem es ist, und verschiedene Pfadabschütterer verwenden (Windows ist '/', Linux ist '/'). Geben Sie schließlich die Liste an die Rezeption zurück.
Dieser Artikel wurde in "Zusammenfassung der Java -Upload -Operationstechniken" zusammengestellt, und jeder kann gerne lernen und lesen.
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.