Content-Disposition: Quelles sont les différences entre «inline» et «attachment»?

245

Quelles sont les différences entre

Response.AddHeader("Content-Disposition", "attachment;filename=somefile.ext")

et

Response.AddHeader("Content-Disposition", "inline;filename=somefile.ext")

Je ne connais pas les différences, car lorsque j'utilise l'un ou l'autre, je reçois toujours une invite de fenêtre me demandant de télécharger le fichier pour les deux. J'ai lu les spécifications, mais ce n'est pas du tout.

Cleiton
la source
1
Lorsque le type de disposition est en ligne, il n'a généralement pas de nom de fichier.
james.garriss
Juste pour l'info de n'importe qui: le nom de fichier peut toujours être défini en ligne, mais ce n'est pas standard. Chrome, Firefox, IE et Opera respectent le nom de fichier mais Edge ne le fait pas (2018).
bugybunny
Quelqu'un connaît-il une ressource pour montrer ce que les différents navigateurs font avec le type de contenu, similaire à caniuse pour CSS?
jmoreno

Réponses:

291

Parce que lorsque j'utilise l'un ou l'autre, je reçois une invite de fenêtre me demandant de télécharger le fichier pour les deux.

Ce comportement dépend du navigateur et du fichier que vous essayez de diffuser. Avec inline, le navigateur essaiera d'ouvrir le fichier dans le navigateur.

Par exemple, si vous avez un fichier PDF et Firefox / Adobe Reader, une disposition en ligne ouvrira le PDF dans Firefox, tandis qu'une pièce jointe le forcera à télécharger.

Si vous diffusez un fichier .ZIP, les navigateurs ne pourront pas l'afficher en ligne, donc pour les dispositions en ligne et les pièces jointes, le fichier sera téléchargé.

jimyi
la source
7
Juste une correction rapide: ce comportement est parfois différent d'un contexte mobile. De nombreuses vues Web d'applications ignorent la disposition des pièces jointes et la rendent simplement dans le navigateur si elles peuvent identifier correctement le type de contenu.
mixdev
31

S'il est en ligne, le navigateur doit essayer de le rendre dans la fenêtre du navigateur. Si ce n'est pas le cas, il aura recours à un programme externe, invitant l'utilisateur.

Avec la pièce jointe, il ira immédiatement à l'utilisateur et n'essaiera pas de le charger dans le navigateur, que ce soit possible ou non.

Cullen Walsh
la source
10

Il peut également être utile de mentionner qu'inline essaiera d'ouvrir les documents Office (xls, doc, etc.) directement à partir du serveur, ce qui pourrait conduire à une invite d'informations d'identification de l'utilisateur.

voir ce lien:

http://forums.asp.net/t/1885657.aspx/1?Access+the+SSRS+Report+in+excel+format+on+server

quelqu'un a essayé de fournir un rapport Excel de SSRS via ASP.Net -> l'utilisateur a toujours été invité à entrer les informations d'identification. Après avoir cliqué sur Annuler à l'invite, il serait ouvert de toute façon ...

Si la disposition de contenu est marquée comme pièce jointe, elle sera automatiquement enregistrée dans le dossier temporaire après avoir cliqué sur Ouvrir, puis ouverte dans Excel à partir de la copie locale.

pastrami01
la source