[JAVA] Mit Spring Boot herunterladen

Umgebung

Motivation

Ich möchte ohne Bildschirmübergang herunterladen, aber ich wollte die HttpResponseHeader-Klasse nur ungern verwenden, daher habe ich sie nur mit der Spring-Paketklasse implementiert. Beachten Sie, dass die Implementierung auf der Clientseite wahrscheinlich vergessen wird.

Implementierung

Controller

@RequestMapping("/download")
@ResponseBody
public ResponseEntity<byte[]> download() {
    byte[] data = xxx; // xxx:byte[]Objekt formatieren
    
    // ResponseHeader
    HttpHeaders header = new HttpHeaders();
    header.add("Content-Type", "yyy"); // yyy:Beliebiger Inhalt-Type
    header.add("Content-Disposition", "attachment; filename*=utf-8''" + URLEncoder.encode("zzz", "UTF-8")); // zzz:Beliebiger Dateiname
    header.add("Set-Cookie", "fileDownload=true; path=/");

    return new ResponseEntity<byte[]>(data, header, HttpStatus.OK);
}

javascript

//Ereignis beim Senden des Formulars hinzufügen
$("#myform").submit(function() {
  startLoading(); //Runde und runde Methode
  const COOKIE_KEY_FILEDOWNLOAD = 'fileDownload=';
  var isFileDownload = false;
  //Wiederholen, bis der Download abgeschlossen ist
  var intervalId = setInterval(function() {
    //Holen Sie sich fileDownload von Cookie
    const COOKIES = document.cookie;
    var position = COOKIES.indexOf(COOKIE_KEY_FILEDOWNLOAD);
    if (position >= 0) {
      var startIdx = position + COOKIE_KEY_FILEDOWNLOAD.length;
      var endIdx = COOKIES.indexOf(';', startIdx);
      if (endIdx < 0) {
        endIdx = COOKIES.length;
      }
      isFileDownload = decodeURIComponent(COOKIES.substring(startIdx, endIdx)) == 'true';
    }
    //Wenn fileDownload true ist, wird es wiederholt beendet
    if (isFileDownload) {
      clearInterval(intervalId);
      var date = new Date();
      date.setTime(date.getTime() - 1);
      document.cookie = COOKIE_KEY_FILEDOWNLOAD + 'false; path=/; max-age=0';
      stopLoading(); //Eine Methode, um rund und rund anzuhalten
    }
  }, 500);
});

Referenz

Recommended Posts

Mit Spring Boot herunterladen
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Verwenden Sie die Standardauthentifizierung mit Spring Boot
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Hot Deploy mit Spring Boot-Entwicklung
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
Implementieren Sie den Dateidownload mit Spring MVC
(Intellij) Hallo Welt mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Die Nachrichtenkooperation begann mit Spring Boot
Fordern Sie Spring Boot heraus
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
HTTPS mit Spring Boot und Let's Encrypt
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Verwenden Sie den Cache mit EhCashe 2.x mit Spring Boot
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Erreichen Sie die BASIC-Authentifizierung mit Spring Boot + Spring Security
Erstellen Sie eine Website mit Spring Boot + Gradle (jdk1.8.x)
Konfigurieren Sie die Spring Boot-Anwendung mit dem Maven Multi-Modul
SPRING BOOT Lernaufzeichnung 01
Testen Sie den Controller mit Mock MVC im Spring Boot
Asynchrone Verarbeitung mit regelmäßiger Ausführung in Spring Boot
Bis zur Datenerfassung mit Spring Boot + MyBatis + PostgreSQL
Frühlingsstiefel + Heroku Postgres
Erstellen Sie mit Spring Boot eine einfache Such-App