Java-webapp: hinzufügen eines content-disposition-header zu erzwingen Browser "speichern als" - Verhalten
Obwohl es nicht Teil der HTTP 1.1/RFC2616 webapps, die wollen, zu zwingen, eine Ressource zu werden heruntergeladen (statt angezeigt) in einem browser verwenden können, die Content-Disposition
header wie dieser:
Content-Disposition: attachment; filename=FILENAME
Obwohl es nur definiert in RFC2183 und nicht Teil der HTTP 1.1-es funktioniert in den meisten web-Browsern wie gewünscht.
Also von der client-Seite, alles ist gut genug.
Jedoch auf der server-Seite, in meinem Fall, ich habe eine Java-webapp und ich weiß nicht, wie soll ich das einstellen, dass header, vor allem in dem folgenden Fall...
Werde ich eine Datei (z.B. namens "bigfile"), gehostet auf einem Amazon S3-Instanz (meine S3-bucket zugreifen, durch Verwendung eines partiellen Adresse wie: files.mycompany.com/), damit die Benutzer werden in der Lage sein Zugriff auf diese Datei an files.mycompany.com/bigfile.
Nun gibt es eine Möglichkeit, das Handwerk eine servlet (oder ein .jsp), so dass die Content-Disposition
header wird immer Hinzugefügt, wenn der Benutzer herunterladen möchte, die Datei?
Was würde der code so Aussehen und was sind die Fallstricke, wenn überhaupt?
gesehen, Ihren Kommentar, ich Schätze so... Aber herauszufinden, dass heraus, ist irgendwie genau der springende Punkt bei meiner Frage 🙂 Wenn Sie eine Antwort detaliling diese ein klein wenig mehr ich werde upvote und akzeptieren 🙂
gesehen, Ihr Kommentar, ich gegoogelt auf S3 und gefunden, dass anscheinend auf vielfachen Wunsch können Sie "Upload mit custom Header" (Dateien, um Ihre Eimer), das wäre eine tolle Lösung für mein Problem!
In der Tat, es sieht aus wie das Amazon-management-Benutzeroberfläche können Sie einrichten-Kopfzeilen direkt, ob das funktioniert für Sie. Vielen Dank für diese Frage!!
Ich suchte herum, aber ich kann nicht finden, alle Verweise S3 unterstützt JSP/Servlet. Warum hast du es mit einem tag versehen? Das einzige, JSP/Servlet-Lösung würde sein, zu spielen für einen proxy auf Ihrem eigenen host und setzen Sie das content-disposition-header programmatisch, sondern, dass der Hauptzweck der S3 (CDN, so dass Sie sparen können verbindungen/Anfragen auf Ihrer primären domain) völlig sinnlos, man könnte dann als gut, nur host-it-yourself.
InformationsquelleAutor SyntaxT3rr0r | 2010-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie nicht eine URL, die war ein direkter Verweis auf die Datei. Stattdessen, Sie haben eine URL, die führt, um Ihr servlet-code (oder zu irgendeiner Art von action-code in der server-side framework). Das wiederum würde haben Zugriff auf den Datei-Inhalt und Schaufel Sie Sie an den client, nachdem Sie die Einstellung im header. (Sie würde auch wollen, sich zu erinnern, befassen sich mit cache-control-Header.)
Der HttpServletResponse Klasse hat APIs, lassen Sie alle setzen die Kopfzeilen Sie wollen. Sie haben, um sicherzustellen, dass Sie richten Sie die Header vor Sie beginnen, dumping aus dem Inhalt der Datei, weil die Kopfzeilen buchstäblich zu kommen, müssen zuerst in den stream gesendet wird an den browser.
Ist dies nicht viel anders aus einer situation, wo Sie vielleicht ein servlet, das würde generieren eine download-on-the-fly.
Bearbeiten lasse ich das Zeug hier oben für die Nachwelt Willen, aber ich werde beachten Sie, dass es ist (oder sein könnte) einige Weg, um mit der hand über einige HTTP-Header zu S3 wenn Sie store eine Datei, so dass Amazon spuckt die wieder aus, wenn die Datei serviert wird. Ich bin mir nicht ganz sicher, wie würden Sie das tun, und ich bin nicht sicher, ob "Content-disposition" - ist eine Kopfzeile, die Sie einrichten können, aber ich werde weiter suchen.
Ja, ich Stimme zu, aber siehe meinen Kommentar - ich gestehe, zu einem Leichtgewicht, wenn es um die S3-details, aber ich bin auf der Suche ...
InformationsquelleAutor Pointy
Habe ich diese arbeiten wie Spitz-spitz aus. Statt der Verknüpfung direkt zu dem asset - in meinem Fall pdfs - man nun links auf eine JSP-Datei als download bezeichnet.jsp nimmt und analysiert, die GET-Parameter und dient dann aus der pdf-Datei als download.
Download hier
Hier ist der jsp-code, den ich verwendet. Seine arbeiten in IE8, Chrome und Firefox:
InformationsquelleAutor Jonathan McK
Setzen Sie ein
.htaccess
Datei in den root-Ordner mit der folgenden Zeile:InformationsquelleAutor BalusC
Ich gerade hier gefunden über google.
Und ich hatte ein anderes problem, aber ich immer noch wollen, zu einem Servlet (wie ich das generieren der Inhalte).
Jedoch die folgende Zeile ist alles was Sie brauchen in ein Servlet.
InformationsquelleAutor grayoctagon