Wie lade ich Dateien im Springboot -Hintergrund hoch und lade ich herunter?
Ein aktuelles Projekt umfasste Datei -Upload und Download. Das Front-End-Uploading verwendet das Baidu-Webuloader-Plug-In. Die Verwendung dieses Plug-Ins wird noch untersucht und wird in Zukunft aussortiert und aufgezeichnet. In diesem Artikel wird hauptsächlich die Verarbeitung des Datei -Uploads und des Downloads im Springboot -Hintergrund vorgestellt.
Einzeldatei -Upload
// einzelne Datei upload @RequestMapPing (value = "/upload")@responseBodypublic String Upload (@RequestParam ("Datei") MultiPartFile -Datei) {try {if (iiseMpty ()) {return "-Datei ist leer"; } // den Dateinamen String sateiname = file.getOriginalFileName () abrufen; logger.info ("Der Name der hochgeladenen Datei lautet:" + Dateiname); // den Suffixnamen des Dateistring -Suffixname = Dateiname.substring (Dateiname.lastIndexof (".") Abrufen; logger.info ("Der Suffix -Name der Datei lautet:" + SuffixName); // Setzen Sie die Dateispeicherpfad String filepath = "d: // imp //"; String path = filepath + Dateiname + Suffixname; Datei dest = neue Datei (Pfad); // Erkennen Sie, ob das Verzeichnis existiert, wenn (! Dest.getParentFile (). Exist ()) {dest.getParentFile (). } catch (illegalStateException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } return "Upload fehlgeschlagen";}Wenn Sie den Dateipfad und den Dateinamen ändern möchten, ändern Sie einfach Filepath und Dateiname.
Mehrere Datei -Uploads
// multi-file upload @RequestMapping (value = "/uploadmore", method = requestMethod.post) @ResponseBodypublic String handleFileUpload (httpServletRequest-Anforderung) {list <MultiPartFile> Dateien = (multiparthttpRequestRequest). MultiPartFile -Datei = null; BufferedOutputStream stream = null; für (int i = 0; i <files.size (); ++ i) {file = files.get (i); String filepath = "d: // imp //"; if (! file.isempty ()) {try {byte [] bytes = file.getBytes (); stream = new bufferedOutputStream (neuer FileOutputStream (neue Datei (filepath + file.getOriginalFileName ())); // Setzen Sie den Dateipfad und den Namen Stream.write (Bytes); // Schreiben Sie an stream.close (); } catch (Ausnahme e) {Stream = null; Rückgabe "th" + i + "Datei Upload fehlgeschlagen ==>" + e.getMessage (); }} else {return "th" + i + "Upload fehlgeschlagen, weil die Datei leer ist"; }} return "erfolgreich hochgeladen";}Datei herunterladen
// Datei Download verwandter Code @RequestMapPing ("/download") public String downloadFile (httpServletRequest -Anforderung, httpServletResponse -Antwort) {String FileName = "aim_test.txt"; // den Dateinamen festlegen und den Dateinamen ersetzen, der den Dateinamen heruntergeladen hat. = neue Datei (RealPath, Dateiname); if (file.exists ()) {response.setContentType ("application/force-download"); // Setzen Sie den erzwungenen Download ohne Öffnen von Antwort.AddHeader ("Content-Disposition", "Attemment; FileName =" + FileName); // Setzen Sie den Dateinamen Byte [] buffer = new byte [1024]; FileInputStream fis = null; BufferedInputStream Bis = null; try {fis = new FileInputStream (Datei); Bis = neuer BufferedInputStream (FIS); OutputStream os = response.getOutputStream (); int i = Bis.read (Puffer); while (i! = -1) {os.write (buffer, 0, i); i = Bis.read (Puffer); } System.out.println ("Erfolg"); } catch (Ausnahme e) {e.printstacktrace (); } endlich {if (bis! = null) {try {Bis.close (); } catch (ioException e) {e.printstacktrace (); }} if (fis! = null) {try {fis.close (); } catch (ioException e) {e.printstacktrace (); }}}}} return null;}MultipartConfig -Konfiguration
Sie können die MultipartConfig -Konfigurationsklasse verwenden, um die Datei -Uploads global zu steuern.
@ConfigurationPublic Class MultiPartConfig {@Bean public MultiPartConFigelement MultiPartConFigelement () {MultipartConFigFactory Factory = new MultipartConFigFactory (); // Setzen Sie die Dateigrößengrenze, wenn die Seite diese Größe überschreitet, werden Ausnahmeinformationen fabrisch geworfen.setMaxFileSize ("2MB"); // KB, MB // Setzen Sie die Gesamtdaten -Gesamtdaten -Gesamtgröße Factory.SetMaxRequestSize ("20MB"); // Setzen Sie den Datei temporärer Ordnerpfad // factory.setLocation ("e: // test //"); // Wenn die Datei größer als dieser Wert ist, wird sie als Datei gespeichert. Wenn es geringer ist als dieser Wert, wird die Datei im Speicher gespeichert. Die Standardeinstellung ist 0 // factory.setMaxRequestSize (0); return factory.createmultipartConfig (); }}Dinge zu beachten
Das vordere und hintere Enddateiübertragungsformat sollte mehrteilig/Formdaten-Daten sein
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.