Content-disposition je rozšíření protokolu MIME, které instruuje MIME uživatelského agenta, aby zobrazoval připojené soubory. Když Internet Explorer obdrží hlavičku, aktivuje dialogové okno pro stahování souboru a jeho pole pro název souboru je automaticky vyplněno názvem souboru uvedeným v hlavičce. (Poznámka: je to způsobeno konstrukcí; Tuto funkci nelze použít k uložení dokumentu do počítače uživatele, aniž byste se zeptali, kam ho uložit. )
Když server odešle soubor do klientského prohlížeče, pokud je to typ souboru podporovaný prohlížečem, obvykle se ve výchozím nastavení otevře v prohlížeči, například txt, jpg atd., které se zobrazí přímo v prohlížeči. Pokud uživatel potřebuje být vyzván k uložení, je nutné použít Content-Disposition k jeho zpracování, klíčem je přidat přílohu:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
Poznámka: To vás vyzve k uložení nebo otevření, a i když se rozhodnete ho otevřít, otevře se s příslušným programem, jako je Notepad, místo aby se to IE otevřelo přímo.
Content-Disposition znamená poskytnout výchozí název souboru, když chce uživatel uložit požadovaný obsah jako soubor. Konkrétní definice jsou následující:
content-disposition = "Content-Disposition" ":"
typ dispozice *( ";" Disposition-Parm )
disposition-type = "připoutanost" | disp-extension-token
disposition-parm = Filename-parm | Disp-Extension-Parm
Název-souboru parm = "název souboru" "=" uvozovkový řetězec
disp-extension-token = token
disp-extension-parm = token "=" ( token | uvozovkový řetězec )
Takže můžeme vidět konkrétní příklady z výše uvedeného:
Cache-Control:private
Content-Disposition:attachment; filename=Index1.png
Content-Length:328462
Content-Type:image/png
Date:Fri, 14 Oct 2016 01:08:04 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
Content-Disposition: attachment; filename=“filename.xls”
Samozřejmě, parametr názvu souboru může obsahovat informace o cestě, ale User-Agnet tuto informaci ignoruje a jako název souboru použije pouze poslední část cesty. Pokud použijete tuto hlavičku v typu response/octet-stream, znamená to, že nechcete obsah zobrazovat přímo, ale objeví se okno "stažení souboru" a pak je na vás, zda "otevřete" nebo "uložit".
Poznámky:
1. Při použití Content-Disposition v kódu zajistit, aby prohlížeč vyskočil s dialogem ke stažení. response.addHeader("Content-Disposition","attachment"); Ujistěte se, že jste nic neudělali s vypnutím cache prohlížeče. Následovně:
response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0);
|