Avatar billede klajdba Nybegynder
18. september 2003 - 12:24 Der er 8 kommentarer

Tvinge download af PDF fra ekstern kilde igennem

Hej!

Jeg arbejder på en løsning, hvor en ekstern leverandør har en stribe pdf'er og andre fil-typer liggende, som brugerne efter køb skal kunne downloade.

Hvordan kan jeg tvinge brugerens browser til at download - og ikke vise - filen? Der er ASP og javascript til rådighed.

Laver man et link til f.eks. en pdf-fil åbnes den i Acrobat Reader - naturligvis. Det vil jeg uden om.

Lå filen lokalt kunne jeg tvinge brugerens browser til at downloade med...:
response.contenttype="application/x-unknown"
og så add'e en content-disposition & attachment med filnavnet som en http-header for til sidst at binarywrite den til brugerens browser. Men nu ligger denne fil IKKE lokalt, så det kan jeg ikke.

At få den eksterne leverandør til at ændre sin webserver, så den pdf-filer med en anden mime-type er ikke en mulighed.

Altså - normalt handler denne type spørgsmål om filer der ligger LOKALT, hvordan man tvinger download af dem igennem. Bemærk tvisten med at her er det på en server, som jeg ikke bestemmer over.
Avatar billede goose Nybegynder
18. september 2003 - 12:58 #1
Læs denne artikel, så er du godt på vej:

http://www.magik.dk/vis_artikel.asp?id=5

/Goose
Avatar billede klajdba Nybegynder
18. september 2003 - 13:04 #2
Det kan kun anvendes hvis filen ligger lokalt.

Tak for forsøget ellers. :)
Avatar billede dawin_dk Nybegynder
20. september 2003 - 23:22 #3
du laver en et ASP-script der fungerer som "proxi" for filen .. asp-scriptet kan så angive en mime-type og tvinge den til at gemme filen istedet for at åbne den ...

f.eks.:

<%
Response.ContentType = "application/pdf"
Response.AddHeader "content-disposition","attachment; filename=" & filnavn

strFilePath=server.mappath("/url/to/file.pdf")

set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile strFilePath

Response.BinaryWrite objStream.Read

objStream.Close
Set objStream = Nothing
%>
Avatar billede dawin_dk Nybegynder
20. september 2003 - 23:23 #4
skulle virke .. og krøver ik ædringer på serveren ... og du vil også kunne udbygge den med at data hentes fra en anden server og proxies igennem ... hvis du benytter en asphttp eller socket til at hente den inden du udskriver den ...
Avatar billede dawin_dk Nybegynder
20. september 2003 - 23:24 #5
(ved ikke hvilke httpget-komponenter du har til rådighed... finder du denne kan jeg tilpasse scriptet til at bruge denne...)
Avatar billede klajdba Nybegynder
21. september 2003 - 01:00 #6
Men det virker bare kun hvis filen ligger lokalt. Ellers kan jeg ikke lave en stream med filen.
Avatar billede klajdba Nybegynder
21. september 2003 - 01:00 #7
Men tak for forsøget! :)
Avatar billede dawin_dk Nybegynder
21. september 2003 - 01:06 #8
klajdba : er jo det jeg netop siger... undersøg hvilken http-komponent du har til rådighed på serveren ... så skriver jeg det script der rent faktisk får det til at virke... med sådan en komponent vil du netop kunne hente data fra den anden server... og sende det til personen der requester filen .. bare med de nye headers ....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester