Η διάθεση περιεχομένου είναι μια επέκταση του πρωτοκόλλου MIME, το οποίο δίνει εντολή στον πράκτορα χρήστη MIME να εμφανίζει συνημμένα αρχεία. Όταν ο Internet Explorer λάβει την κεφαλίδα, ενεργοποιεί το παράθυρο διαλόγου λήψης αρχείου και το πλαίσιο ονόματος αρχείου συμπληρώνεται αυτόματα με το όνομα αρχείου που καθορίζεται στην κεφαλίδα. (Σημειώστε ότι αυτό προκαλείται από το σχεδιασμό. Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη δυνατότητα για να αποθηκεύσετε ένα έγγραφο στον υπολογιστή ενός χρήστη χωρίς να ρωτήσετε τον χρήστη πού να το αποθηκεύσει. )
Όταν ο διακομιστής στέλνει ένα αρχείο στο πρόγραμμα περιήγησης πελάτη, εάν πρόκειται για τύπο αρχείου που υποστηρίζεται από το πρόγραμμα περιήγησης, θα ανοίξει γενικά από προεπιλογή χρησιμοποιώντας το πρόγραμμα περιήγησης, όπως txt, jpg κ.λπ., το οποίο θα εμφανίζεται απευθείας στο πρόγραμμα περιήγησης, εάν πρέπει να ζητηθεί από τον χρήστη να αποθηκεύσει, είναι απαραίτητο να χρησιμοποιήσετε το Content-Disposition για να το επεξεργαστείτε, το κλειδί είναι να προσθέσετε συνημμένο:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
Σημείωση: Αυτό θα σας ζητήσει να αποθηκεύσετε ή να ανοίξετε, και ακόμα κι αν επιλέξετε να το ανοίξετε, θα το ανοίξει με το σχετικό πρόγραμμα όπως το Σημειωματάριο, αντί να το ανοίξει απευθείας ο IE.
Το Content-Disposition είναι να παρέχει ένα προεπιλεγμένο όνομα αρχείου όταν ο χρήστης θέλει να αποθηκεύσει το ζητούμενο περιεχόμενο ως αρχείο. Οι ειδικοί ορισμοί είναι οι εξής:
content-disposition = "Περιεχόμενο-Διάθεση" ":"
disposition-type *( ";" διάθεση-parm )
disposition-type = "συνημμένο" | disp-επέκταση-διακριτικό
disposition-parm = όνομα αρχείου-parm | disp-επέκταση-parm
filename-parm = "όνομα αρχείου" "=" quoted-string
disp-extension-token = διακριτικό
disp-extension-parm = token "=" ( token | quoted-string )
Έτσι μπορούμε να δούμε συγκεκριμένα παραδείγματα από τα παραπάνω:
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”
Φυσικά, η παράμετρος ονόματος αρχείου μπορεί να περιέχει πληροφορίες διαδρομής, αλλά το User-Agnet θα αγνοήσει αυτές τις πληροφορίες και θα χρησιμοποιήσει μόνο το τελευταίο μέρος των πληροφοριών διαδρομής ως όνομα αρχείου. Εάν χρησιμοποιείτε αυτήν την κεφαλίδα στον τύπο απόκρισης application/octet-stream, σημαίνει ότι δεν θέλετε να εμφανίσετε απευθείας το περιεχόμενο, αλλά θα εμφανιστεί ένα παράθυρο διαλόγου "λήψη αρχείου" και, στη συνέχεια, εξαρτάται από εσάς να αποφασίσετε εάν θα "ανοίξετε" ή "αποθηκεύσετε".
Σημειώσεις:
1. Όταν χρησιμοποιείτε το Content-Disposition στον κώδικα για να βεβαιωθείτε ότι το πρόγραμμα περιήγησης εμφανίζει το παράθυρο διαλόγου λήψης. response.addHeader("Content-Disposition","συνημμένο"); Βεβαιωθείτε ότι δεν έχετε κάνει τίποτα για την απενεργοποίηση της προσωρινής αποθήκευσης του προγράμματος περιήγησης. Ως εξής:
response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Λήγει", 0);
|