download-Datei mit ajax() POST-Anforderung durch Spring MVC

Ich versuche, eine Datei zu downloaden. Die Aktion wird ausgelöst, indem Sie ajax () - Post-Request. Die Anfrage sendet Daten im json-format an den controller. Die controller generieren der Datei (in bytes) und senden Sie es zurück.

java-script:

function getLicenseFile() {
    $.ajax({
        type: 'POST',
        url: '<%=request.getContextPath()%>/licenses/rest/downloadLicenseFile',
        dataType: 'json',
        contentType: 'application/json;charset=UTF-8',
        data: ko.mapping.toJSON(licenseModel),
        success: function (data) {
            console.log("in sucess")
        },
        error:function (xhr, ajaxOptions, thrownError){
            console.log("in error")
        } 
    });
}  

Controller:

@RequestMapping(value = "/licenses/rest/downloadLicenseFile", method = RequestMethod.POST)
    @ResponseStatus(value=HttpStatus.OK)
    @ResponseBody
    public void createLicenseFile(@Valid @RequestBody License license, HttpServletResponse response) throws Exception {

        logger.debug("Contoller License in: "+ license);

        byte[] licensedata = licenseEncodeDefaultService.createLicenseFile(license);
        logger.debug("licenseData: " + new String(licensedata));

        response.setHeader("Content-Disposition", "attachment; filename=\"" + license.getCustomer() + ".license\"");
        response.getOutputStream().write(licensedata);
        response.flushBuffer();
    }

Problem:

* Soll der Browser öffnet ein download-box, aber es nicht geschah

* Die Antwort verarbeitet wird, in der Fehler: der Abschnitt der ajax-Funktion (aber der http-Status OK)

Also, was mache ich falsch oder was ist der richtige Weg, dies zu tun?

  • Du bist Einstellung dataType: 'json' aber Sie irgendeine Art von Lizenz-Datei? Auch ich glaube nicht, können Sie ajax verwenden, um eine Datei herunterzuladen.
  • versuchen, das herunterladen einer Datei gespeichert werden, um lokale Verzeichnis mit ajax kann nicht getan werden, und ist viel mehr code als nur die Umleitung auf die Datei-url selbst
  • stackoverflow.com/questions/3613526/... könnte auch helfen
  • eine funktionierende Lösung Gefunden: Was ist die richtige Art und Weise zu kommunizieren. Soll ich Antwort auf meine eigene Frage ???
  • Natürlich hast du Recht. Ich vermisse, dass der Datentyp für den Rückgabewert.
  • Es ist ok, um Ihre eigene Frage zu beantworten.
  • Könnten Sie bitte teilen Sie die Funktionierende Lösung, die Sie gefunden? Ich habe genau das gleiche Problem...
  • Sorry für die Verspätung. Finden Sie jetzt mir die Lösung in den Antworten.

InformationsquelleAutor derlinuxer | 2012-11-22
Schreibe einen Kommentar