Content-disposition to rozszerzenie protokołu MIME, które instruuje agenta użytkownika MIME do wyświetlania dołączonych plików. Gdy Internet Explorer otrzyma nagłówek, aktywuje okno dialogowe pobierania plików, a pole nazwy pliku jest automatycznie wypełniane nazwą pliku podaną w nagłówku. (Należy zauważyć, że jest to spowodowane projektem; Nie możesz użyć tej funkcji do zapisania dokumentu na komputerze użytkownika bez zapytania go, gdzie go zapisać. )
Gdy serwer wysyła plik do przeglądarki klienta, jeśli jest to typ pliku obsługiwany przez przeglądarkę, zazwyczaj jest on domyślnie otwierany w przeglądarce, np. txt, jpg itp., które będą wyświetlane bezpośrednio w przeglądarce; jeśli użytkownik musi zostać poproszony o zapis, konieczne jest użycie Content-Disposition do jego przetwarzania, kluczem jest dodanie załącznika:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
Uwaga: To poprosi cię o zapisanie lub otwarcie, a nawet jeśli zdecydujesz się ją otworzyć, otworzy ją za pomocą powiązanego programu, takiego jak Notatnik, zamiast otwierać ją bezpośrednio przez IE.
Content-Disposition polega na podaniu domyślnej nazwy pliku, gdy użytkownik chce zapisać żądaną treść jako plik. Szczegółowe definicje są następujące:
content-disposition = "Content-Disposition" ":"
typ dyspozycji *( ";" dyspozycja-parm )
typ dyspozycji = "przywiązanie" | disp-extension-token
disposition-parm = Filename-parm | Disp-extension-parm
Filename-parm = "filename" "=" quote-string
disp-extension-token = token
disp-extension-parm = token "=" ( token | ciąg przysłowów )
Możemy więc zobaczyć konkretne przykłady z powyższego:
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”
Oczywiście parametr nazwy pliku może zawierać informacje o ścieżce, ale User-Agnet zignoruje te informacje i używa tylko ostatniej części informacji o ścieżce jako nazwy pliku. Jeśli użyjesz tego nagłówka w odpowiedzi typu application/octet-stream, oznacza to, że nie chcesz wyświetlać treści bezpośrednio, ale pojawi się okno "pobieranie plików" i wtedy to od ciebie zależy, czy chcesz "otworzyć" czy "zapisać".
Notatki:
1. Przy użyciu Content-Disposition w kodzie, aby upewnić się, że przeglądarka wyświetli okno pobierania. response.addHeader("Content-Disposition","attachment"); Upewnij się, że nie robiłeś nic w sprawie wyłączenia buforowania przeglądarki. Jak poniżej:
response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0);
|