Download-Datei aus dem ajax-Ergebnis mit blob

Ich diesen code verwenden, um download-excel-Datei vom server.

$.ajax({
    headers: CLIENT.authorize(),
    url: '/server/url',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(jsonData),
    success: function (data) {
        alert('Data size: ' + data.length);
        var blob = new Blob([data], { type: "application/vnd.ms-excel" });
        alert('BLOB SIZE: ' + data.length);
        var URL = window.URL || window.webkitURL;
        var downloadUrl = URL.createObjectURL(blob);
        document.location = downloadUrl;
    },
});

Das problem, das ich erlebe ist, dass obwohl die Daten-und blob-Größen identisch sind, sind die moment-Dokument.Lage zugewiesen bekommt, bin ich aufgefordert, downloaden almoste zwei mal größer als excel-Datei. Und wenn ich versuche es zu öffnen, excel beschwert sich über falsche Datei-format und eröffnet die Datei enthält eine Menge Müll, obwohl erforderlich text ist immer noch da.

Irgendwelche Ideen, was ist die Ursache und wie kann man Sie vermeiden?

Ich denke, dass ist eine tolle Idee. Warum nicht einfach lassen Sie die server-push die Datei an den browser für einen normalen download stream. Dies scheint sehr unnatürlich, es sei denn, Sie haben einen ganz bestimmten Grund, dies zu tun, wie eine Art Proxy oder on-line-Analyse, aber seine nur zu thrash-browser memeory .
Versuchen Sie, den content-type zu arrayBuffer
leider brauche ich, um die Anforderungen zu erfüllen. Ich kann nicht speichern Sie die Datei auf dem server und ich muss mich übergeben-authorization-header Datei zu erhalten.
meinst du Inhalte geben, wo ich angeben, JSON oder beim erstellen von blob?
ja. 10morechars.....

InformationsquelleAutor SMGhost | 2015-04-01

Schreibe einen Kommentar