2014-03-31 5 views
5

Ich habe eine Route /reports/foo-report/rendered/, die eine Datei herunterladen wird (mit der Content-Disposition Header). Wie von REST empfohlen, hängt es vom Header Accept der Anforderung ab, ob der Bericht als PDF oder Powerpoint zurückgegeben wird.Welche Optionen habe ich, um Accept header beim Auslösen eines Datei-Downloads zu setzen?

Welche Optionen habe ich, um diesen Header beim Auslösen eines Datei-Downloads zu setzen? Ich kann natürlich XmlHttpRequest, einen Link oder ein Formular nicht verwenden. Ich benutze derzeit das großartige jquery.fileDownload, aber es scheint das auch nicht zu unterstützen.

Gibt es eine Möglichkeit, dies in einer ordnungsgemäßen RESTy Mode in Browsern zu tun?

+1

http://stackoverflow.com/questions/20361216/how-can-i-set-the-accept-header-for-a-link-on-a-web-page schlägt vor, AJAX trotzdem zu verwenden und eine Daten zurückzugeben URI, auf die Sie dann umleiten können, um den Download auszulösen. Es kann für sehr große Dateien schwierig sein, aber es sollte für durchschnittliche PDFs und PPTs funktionieren. – qternion

Antwort

-1

Ich bin mit jquery.fileDownload nicht vertraut, aber wenn Sie Zugriff auf die Sie $.ajax({}) Anruf haben können bestimmte Header gesetzt:

$.ajax({ 
    headers: { 
     Accept : "text/plain; charset=utf-8", 
     "Content-Type": "text/plain; charset=utf-8" 
    }, 
    data: "data", 
    success : function(response) { 
     ... 
    } 
}) 

als here geschrieben.

+0

Sie können jedoch keinen Dateidownload mit $ .ajax auslösen, oder? –

-1

Eine kuriose Frage in der Tat, leider kann ich nicht einen Weg finden, dies zu tun.

Aber ich fand Django arguing that format suffixes should be considered an acceptable pattern. Während dies gibt Ihnen keine Möglichkeit, die Accept Header zu verwenden, schlägt es eine Alternative (wohl) RESTy Ansatz.

+0

Da dies die Frage nicht beantwortet, sollte dies ein Kommentar sein. Das ist ein interessanter Link. Vielen Dank. –

+0

@GeorgeMauer Ich glaube, es beantwortet die Frage "Gibt es eine Möglichkeit, dies in einer ordnungsgemäßen RESTy Mode in Browsern zu tun?", Was eine strittige RESTy-Ansatz vorschlagen. – rcambrj

+0

Hmm, die Frage lautete explizit, den Accept-Header zu setzen. Ich verstehe jetzt, dass es unmöglich scheint. Wenn du die Antwort umschreiben willst, um eine Quelle auf diesem und @ mir zu zitieren, werde ich es als richtig markieren. –

Verwandte Themen