[ASP] Variabele HTTP header, Show "Save as" voor download

Pagina: 1
Acties:

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Ik heb al gezocht op Google en GoT, weet wel een beetje hoe onderstaande werkt maar kom er toch niet helemaal uit.

Ik heb een ASP pagina, daarin staat een link naar een PDF. Als iemand op deze link klikt wil ik direct dynamisch (dus niet via Custom HTTP Headers in IIS) een "Save As" box laten zien om de PDF te saven.

Als ik het volgende doe word de header natuurlijk toegevoegd aan de ASP file, maar dit moet aan de PDF.

ASP:
1
Response.AddHeader "Content-Disposition", "attachment; filename=docs/test.pdf" 


Kan iemand hier wat meer info over geven hoe ik dit precies moet doen?
|:(

Verwijderd

Je zult op een of andere manier eerst de header moeten versturen, en direct daar achteraan de PDF. Je moet dus de PDF serverside openen en doorsturen naar de client.

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Ja, maar hoe doe ik dat in godsnaam, opzich is het toch niet iets heel raars wat ik vraag, zo gebeurd het toch wel vaker, ook bijv op download sites?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Wat jij vraagt is niet raar, alleen de eis (headers aanpassen door de aanroep van de client) is dat wel. Die eis zorgt er namelijk voor dat het niet kan. Wat wel gebeurt is dat de filetype in de webserver wordt aangepast (zoals je zelf aangeeft) of door er zelf een header voor te plakken en het bestand door te geven (openen en naar de response schrijven, zoals denial aangeeft)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Janoz schreef op 20 januari 2004 @ 16:39:
Wat jij vraagt is niet raar, alleen de eis (headers aanpassen door de aanroep van de client) is dat wel. Die eis zorgt er namelijk voor dat het niet kan. Wat wel gebeurt is dat de filetype in de webserver wordt aangepast (zoals je zelf aangeeft) of door er zelf een header voor te plakken en het bestand door te geven (openen en naar de response schrijven, zoals denial aangeeft)
De enige manier hoe dit zou kunnen is dus na de custom header in ASP ook de PDF file via ASCII of iets dergelijks te streamen naar de client?
Maarja, dan doe ik het wel via IIS, als er geen makkelijkere oplossing is...

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-05 23:39

mulder

ik spuug op het trottoir

Kun je niet iets met Response.BinaryWrite ?

oogjes open, snaveltjes dicht


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Als ik het in IIS regel gaat er ook iets mis.
Zodra ik dan de file gedownload heb en ik klik op andere links in de website gebeurd er niks meer...

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Don Facundo schreef op 20 januari 2004 @ 16:46:
Kun je niet iets met Response.BinaryWrite ?
Hoe doe ik dat dan precies, stream ik dan als het ware de header en de PDF in binary data naar de client?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Urk schreef op 20 januari 2004 @ 17:09:
[...]

Hoe doe ik dat dan precies, stream ik dan als het ware de header en de PDF in binary data naar de client?
volgens mij heb ik je een link gegeven waar dat in staat :( lezen

FvKnijff in "[ASP] Variabele HTTP header, Show "..."

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 17-11-2025

robjanssen

Software Developer

Probeer dit maar eens:

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim strFileName
Dim adTypeBinary
Dim oStream

strFileName = Server.MapPath("documents/test.pdf") 

adTypeBinary = 1
Set oStream = Server.Createobject("ADODB.Stream")
oStream.Open
oStream.Type = adTypeBinary
oStream.LoadFromFile strFileName

Response.AddHeader "Content-Disposition","attachment; filename=" & Chr(34) & "test.pdf" & Chr(34)
Response.ContentType = "application/x-pdf"
Response.BinaryWrite oStream.Read

oStream.Close
Set oStream = Nothing

[ Voor 10% gewijzigd door robjanssen op 20-01-2004 23:01 ]


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
robjanssen schreef op 20 januari 2004 @ 23:01:
Probeer dit maar eens:

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim strFileName
Dim adTypeBinary
Dim oStream

strFileName = Server.MapPath("documents/test.pdf") 

adTypeBinary = 1
Set oStream = Server.Createobject("ADODB.Stream")
oStream.Open
oStream.Type = adTypeBinary
oStream.LoadFromFile strFileName

Response.AddHeader "Content-Disposition","attachment; filename=" & Chr(34) & "test.pdf" & Chr(34)
Response.ContentType = "application/x-pdf"
Response.BinaryWrite oStream.Read

oStream.Close
Set oStream = Nothing
Thanks!! Dat is 'm helemaal! geweldig!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Chr(34) is volgens mij een aanhalingsteken, die mogen niet in de Content-Disposition header. Staat in de HTTP specs.

日本!🎌


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
_Thanatos_ schreef op 21 januari 2004 @ 00:50:
Chr(34) is volgens mij een aanhalingsteken, die mogen niet in de Content-Disposition header. Staat in de HTTP specs.
Heb het zonder geprobeerd, maar dan werkt het niet, ook niet met single quotes dacht ik. Zal nog wel even checken

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Tevens heb ik nog een ander probleem.
Opzich werkt het nu wel goed. Ik heb nu dus een ASP pagina met een link, deze link verwijst weer naar download.asp
In download.asp heb ik bovenstaande code (ietsjes aangepast)

Het probleem begint echter daarna...

Zodra ik op de link klik om de file (PDF) te downloaden krijg ik de Save As popup box. Dan klik ik Save en save deze naar m'n HD.
Dat werkt allemaal prima.

Alleen daarna werken alle andere links binnen mijn site niet meer!! Dit heeft vast iets te maken met de HTTP Headers.

Iemand enig idee hoe ik dat weer oplos? Moet ik de HTTP Header clearen ofzo??
:? :?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-05 23:39

mulder

ik spuug op het trottoir

Flush?

oogjes open, snaveltjes dicht


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Response.Flush geprobeerd maar heeft daar geen invloed op, het probleem blijf. (of bedoelde je dat niet?? :O )
Zijn er verder mensen die een oplossing weten misschien? :?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Anyone...?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Urk schreef op 21 januari 2004 @ 11:32:
Tevens heb ik nog een ander probleem.
Opzich werkt het nu wel goed. Ik heb nu dus een ASP pagina met een link, deze link verwijst weer naar download.asp
In download.asp heb ik bovenstaande code (ietsjes aangepast)

Het probleem begint echter daarna...

Zodra ik op de link klik om de file (PDF) te downloaden krijg ik de Save As popup box. Dan klik ik Save en save deze naar m'n HD.
Dat werkt allemaal prima.

Alleen daarna werken alle andere links binnen mijn site niet meer!! Dit heeft vast iets te maken met de HTTP Headers.

Iemand enig idee hoe ik dat weer oplos? Moet ik de HTTP Header clearen ofzo??
:? :?
Is er nog iemand die een oplossing of tip heeft voor bovenstaand probleempje?
Mijn dank al alvast _/-\o_ _/-\o_

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
uhm.. Stom idee, maar zet er eens een target="_blank" op?
dus:
code:
1
<a href="download.asp?blaat" target="_blank">Mijn link</a>


Dat werkte bij mij... Vraag me niet waarom, lijkt me een "bug" in IE...

Overigens wordt het kicken van een topic binnen 24 uur hier niet erg gewaardeerd, en al helemaal geen 3 keer...

[ Voor 33% gewijzigd door RobIII op 21-01-2004 23:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
Het valt me trouwens nu op dat het probleem niet overal ontstaat, als ik het nu test op de server zelf (waar de site draait) gaat het wel goed en kan ik daarna ook op andere links klikken....

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 27-05 15:46
RobIII schreef op 21 januari 2004 @ 23:01:
uhm.. Stom idee, maar zet er eens een target="_blank" op?
dus:
code:
1
<a href="download.asp?blaat" target="_blank">Mijn link</a>


Dat werkte bij mij... Vraag me niet waarom, lijkt me een "bug" in IE...

Overigens wordt het kicken van een topic binnen 24 uur hier niet erg gewaardeerd, en al helemaal geen 3 keer...
Dit is de code die ik nu heb -->

HTML:
1
[img]"images/pdf.gif"[/img]


Misschien eens in een <a href=""> zetten, misschien....
Moet het morgen even op m'n werk testen want daar heb ik het probleem... (XP SP1 + IE6)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Urk schreef op 21 januari 2004 @ 23:06:
[...]

Dit is de code die ik nu heb -->
<knip>
Misschien eens in een <a href=""> zetten, misschien....
Moet het morgen even op m'n werk testen want daar heb ik het probleem... (XP SP1 + IE6)
Een window.open('download.asp','',''); o.i.d. zal ook wel werken

[ Voor 34% gewijzigd door RobIII op 21-01-2004 23:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1