[ASP] Kan niet downloaden vanuit database

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb een stuk script waarmee een bestand gedownload kan worden vanuit de database die eraan hangt. Nu wil dit script alleen in MSIE (alle versies) niet goed gaan. Als ik de URL opvraag, en het bestand wil opslaan, krijg ik de volgende melding:

Afbeeldingslocatie: http://www.thany.org/screenshots/Screenshot270.gif

In Mozilla en Opera gaat het gewoon goed. Ik heb alles al 100x nagelopen en volgens mij is alles perfect conform de standaarden enzo. De content-type heb ik maar op application/x-msdownload gezet, maar eigenlijk maakt het niets uit waar ik het op zet. Zie hier de code (is dus JScript, voor de duidelijkheid):
ASP:
1
2
3
4
5
6
Response.ContentType = rs("ContentType").Value;
Response.CharSet = "ISO-8859-13";
Response.CacheControl = "No-store";
Response.AddHeader("Content-Disposition",
   "attachment; filename=" + rs("Filenaam").Value);
Response.BinaryWrite(rs("Data").Value);
Ik kan me echt niet voorstellen dat hier iets fout in zit, en daarom zal het waarschijnlijk ook werken in alle browsers behalve MSIE. Maar helaas is MSIE wel de meeste gebruikte, dus het zou cool zijn als het wel zou werken. De Content-Disposition header weglaten helpt niet. Em op "inline" zetten maakt ook geen verschil. Cache-Control veranderen of weglaten maakt niet uit. Expires of ExpiresAbsolute instellen maakt ook al niet uit en de CharSet lijkt ook geen enkel verschil te maken.

Ook kan ik me eigenlijk niet voorstellen dat niemand dit probleem vaker gehad heeft. Dus er zal toch wel een oplossing moeten zijn?

日本!🎌


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Probeer eens 'Response.Buffer = true;' eraan toe te voegen; dat helpt misschien wel. Het kan ook zijn dat je server deze bewerking niet toestaat.

Wat misschien wel even handig is is om de content-type op "text/plain" te zetten; dan kan je een eventuele ASP-foutmelding lezen (en aan ons laten zien :) ).

TheStreme - Share anything with anyone


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Is het toevallig IE5.5? of 5.0?
In een van die 2 zat een vervelende bug, als ik me goed herinner.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
"Response.Buffer = true;" toevoegen helpt geen moer :)

En er komt helemaal geen ASP-foutmelding, zoals ik al zei werkt het in andere browsers wel. MSIE geeft die melding juist ná het 'downloaden', wanner het script dus al lang en breed succesvol uitgevoerd is...

gorgi_19: ik heb het geprobeerd met MSIE 4.0, 5.0, 5.5 en heb hier 6.0SP1 draaien. Allemaal hetzelfde probleem. Lijkt wel een MS-trekje.

/edit
dit zijn trouwens de headers die het script teruggeeft:
code:
1
2
3
4
5
6
7
8
9
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 18 Sep 2003 11:41:26 GMT
X-Powered-By: ASP.NET
Content-Disposition: attachment; filename=bestandje.doc
Content-Type: application/msword; Charset=ISO-8859-13
Expires: Thu, 18 Sep 2003 11:40:26 GMT
Set-Cookie: ASPSESSIONIDSQRRBQAC=CONJEMFABFGFEABMHKEFIIIE; path=/
Cache-control: No-store

[ Voor 65% gewijzigd door _Thanatos_ op 18-09-2003 13:45 ]

日本!🎌


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:17

TeeDee

CQB 241

Vraag: is de desbetreffende download opgestart vanuit een form oid? Dan kan het kloppen. Dit hebben wij ook gehad:
Binary downloads vanuit een form: exact dezelfde error. Het bedrijf van wie we software hadden gekocht deden dit af als een bug in IE.

Probeer het eens met een gewone link ipv een "submit" van iets.

Als het geen form is, dan heb ik niks gezegd netulek! :)

Heart..pumps blood.Has nothing to do with emotion! Bored


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Nee, is een doodnormale link. Gewoon intiepen en op enter rammen :)

Ik heb overigens ook al de charsets latin-9, us-ascii, utf-8 en windows-1252 geprobeerd. Ook dat maakt allemaal geen kont uit.

Een bug in MSIE kan ik me eigenlijk niet voorstellen. Het lijkt op een bug, maar als ie er al vanaf 4.0 in zit, zou iemand em toch opgevallen moeten zijn in de afgelopen 7 jaar :)
Zal wel een hidden/undocumented 'feature' zijn. Maar de vraag is dus waarom die feature er in zit en hoe je er geen gebruik van maakt...

日本!🎌


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Zo, na veel uitzoeken heb ik het uiteindelijk maar in ASP.NET geprobeerd en gekeken wat die dan voor headers teruggeeft. Want tot mijn grote verbazing werkt het wel in ASP.NET!

Er waren praktisch twee dingen anders aan de headers: ik had geen Expires header meegegeven en de Cache-Control stond op private ipv no-store.

Ik kon me niet voorstellen dat het hieraan lag, maar eigenwijs als ik ben, ga ik beide veranderen in de ASP-code. Expires weghalen of in de toekomst zetten hielp niet. Cache-Control op "private" zetten loste alles opeens op.

Het "waarom" hiervan snap ik totaal niet, maar gelukkig is het probleem wel weg...

日本!🎌

Pagina: 1