Content disposition binary opties




Content disposition binary optiesLaatst bijgewerkt: 12 feb 2013 Content-disposition header - dwingen SaveAs in browsers Er zijn situaties (om een ??documentatie in pdf-formaat of een financieel document op te slaan) waar u een hyperlink naar een bestand wilt hebben om een ??SaveAs-dialoog in browser te presenteren. Manieren om dat te doen bestaan. Echter, flaky browser ondersteuning maakt zijn gebruik een wandeling in het mijnveld. Force Saves gebruiken met javascript in Internet Explorer Met behulp van javascript kunt u een dialoog maken om de pagina te bewaren die momenteel wordt weergegeven (als de gebruiker via Internet Explorer op uw pagina kijkt). Dit wordt gedaan via de volgende code: Sla deze pagelta op. U wilt echter gewoon een ander bestand opslaan, het bestand waaraan een hyperlink leidt. Om dat te doen is javascript niet genoeg (er is in ieder geval geen standaard manier) en er moet iets op de server gebeuren. ForceAs dwingen met behulp van de HTTP-koptekst Om de browser te dwingen om SaveAs-dialoog te tonen wanneer u op een hyperlink klikt, moet u de volgende koptekst in HTTP-reactie van het bestand dat u wilt downloaden, bevatten: Content-Disposition: bijlage fileameltfile name. extgt Waar ltfile naam. Extgt is de bestandsnaam die u wilt zien in SaveAs dialoogvenster (zoals finances. xls of mortgage. pdf) - zonder lt en gt symbolen. U moet het volgende in gedachten houden: De bestandsnaam moet in de US-ASCII-charset zijn en mag geen speciale tekens bevatten: lt gt. . ruimte. De bestandsnaam mag geen opgegeven padinformatie bevatten. De bestandsnaam moet in dubbele citaten worden ingesloten, maar de meeste browsers ondersteunen bestandsnamen zonder dubbele aanhalingstekens. Oude browsers vereisen ook het volgende (niet nodig tegenwoordig, maar voor een dwaasbeveiligde oplossing zou het de moeite waard zijn): Content-Type header moet voor Content-Disposition zijn. Content-Type header moet verwijzen naar een onbekend MIME type (tenminste tot de oudere browsers weg gaan). Gedetailleerd gebruik howto Content-disposition ondersteuning in Internet Explorer Het lijkt erop dat Internet Explorer het slechtste track record heeft van de Content-Disposition header support. De functie had veel beveiligingsproblemen en als gevolg daarvan veranderde Microsoft de code vele malen en breek het soms helemaal. Praktijk heeft aangetoond dat de downloadcode een andere HTTP-headerparser gebruikt. En als die parser niet succesvol is om alle headerlijnen te verwerken, zal IE het bestand helemaal niet downloaden. Internet Explorer 9.0 Afhankelijk van de WinInet. dll versie kan het bestand niet worden gelukt met de bestandsnaam die de volgende speciale tekens bevat: lt gt. . ruimte. Microsoft Knowledge Base-artikelen: 949197Het een POST-aanvraag voor een multipartform-data maken. Moet een POST-aanvraag maken dat een bestand uploadt dat ik vanmiddag heb geprobeerd om erachter te komen hoe het eruit ziet. Dit document bevat een sjabloon die voor mij succesvol is. POST pathtoscript. php HTTP1.0 Host: voorbeeld Inhoudstype: multipartform-data, boundaryAaB03x Inhoudslengte: requestlen --AaB03x content-disposition: formulier-data namequotfield1quot veld1 --AaB03x content-disposition: form-data namequotfield2quot field2 - AaB03x content-disposition: formulier-data naamquotuserfilequot filenamequotfilenamequot Content-Type: mimetype Content-Transfer-Encoding: binary Opmerking dat u de koptekst van inhoudslengte moet genereren nadat u het lichaam van het verzoek hebt gegenereerd (vanaf de eerste --AaB03x naar beneden, Inclusief de bestandsdata), dus het ding in de praktijk is om eerst het lichaam te bouwen, de strlen () te krijgen en dan de kopjes op de voorkant van het lichaam te bouwen. Zie RFC1867 - Form-based File Upload in HTML (faqs. orgrfcsrfc1867.html) voor meer informatie over het formaat van quotmultipartform-dataquot-berichten. Veel succes (Zoals gepost op de fsockopenpagina van de PHP Handleiding, door mij.) Door Chris Snyder op vrijdag 28 maart 2003, maak een bijlage Content-Disposition header value met behulp van de gegeven bestandsnaam, indien aanwezig. De bestandsnaam is optioneel en als er geen bestandsnaam gewenst is, maar u wilt opties opgeven. Stel de bestandsnaam in ondefinieerd. Notitie HTTP-headers zijn van de ISO-8859-1-tekenset. Als u deze koptekst op een andere manier dan setHeader in Node. js schrijft, wil u de binaire codering in Node. js opgeven. ContentDisposition accepteert deze eigenschappen in het opties object. Als de bestandsnaam optie buiten ISO-8859-1 is, wordt de bestandsnaam in een aanvullend veld opgeslagen voor clients die Unicode-bestandsnamen ondersteunen en wordt een ISO-8859-1-versie van de bestandsnaam automatisch gegenereerd. Hiermee wordt de ISO-8859-1-bestandsnaam opgegeven om de automatische generatie te overschrijven of de generatie geheel uit te schakelen, standaard als waar. Een tekenreeks specificeert de ISO-8859-1-bestandsnaam om te gebruiken in plaats van automatische generatie. False zal uitschakelen met inbegrip van een ISO-8859-1-bestandsnaam en alleen de Unicode-versie (tenzij de bestandsnaam al ISO-8859-1 is). True zal automatische generatie inschakelen als de bestandsnaam buiten ISO-8859-1 ligt. Als de bestandsnaam optie ISO-8859-1 is en deze optie is opgegeven en een andere waarde heeft, dan wordt de bestandsnaamoptie gecodeerd in het uitgebreide veld en dit wordt ingesteld als het terugvalveld, al zijn deze beide ISO-8859-1. Specificeert het dispositietype, standaardinstellingen. Dit kan ook inline zijn. Of elke andere waarde (alle waarden behalve inline worden behandeld als bijlage. Maar kunnen extra informatie overbrengen indien beide partijen ermee akkoord gaan). Het type is genormaliseerd naar kleine letters. Parseer een inhoudsopgave koptekst. Dit verwerkt automatisch verlengde (Unicode) parameters door ze te decoderen en ze te geven onder de standaard parameternaam. Dit zal een object met de volgende eigenschappen retourneren (voorbeelden worden getoond voor de tekenreeksbestandnaamEURO rates. txt bestandsnaamUTF-8e282ac20rates. txt): type. Het type dispositie (altijd kleine letters). Voorbeeld: bijlage parameters. Een voorwerp van de parameters in de dispositie (naam van parameter altijd kleine letters en uitgebreide versies vervangen niet-uitgebreide versies). Voorbeeld: Stuur een bestand om te downloaden