/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
tving browseren til at downloade...
Fra : Simon Moore Højer


Dato : 11-06-04 23:03

Jeg har nogle filer som skal downloades af min bruger og det går fint så længe
at de hedder *.doc eller *.xls, men når de hedder *.asp, *.htm(l) *.txt så åbner
browseren jo bare filerne.
Er der en måde jeg kan tvinge browseren til at downloade filerne?

Mine links til filerne ser sådan her ud hvis det har nogen betydning:

strSQL = "Select filnavn from opload where rettighed = '" &
Request.Querystring("omraade") & "'"

Set rs = Conn.Execute(strSQL)

If rs.EOF or rs.BOF Then

Response.Write "<h2>Der er ingen filer til denne arbejdsgren:</h2>"

else
do while not RS.EOF
Response.Write "<a href='upload/" & RS("filnavn") & "'>" &
RS("filnavn") & "</a><br><br>"
RS.MoveNext
loop
RS.Close

Set RS = Nothing

End If

På forhånd Tak!

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



 
 
Casper Bang (12-06-2004)
Kommentar
Fra : Casper Bang


Dato : 12-06-04 17:24

> Er der en måde jeg kan tvinge browseren til at downloade filerne?

hmm mon ikke følgende kan bruges ved at skrive som det første i din fil:
Response.ContentType = "application"
eller noget i den retning? Kan ikke lige huske hvilken mime type der kan
bruges til det :s



Simon Moore Højer (12-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 12-06-04 22:17

I toppen af hvilken fil?

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



Casper Bang (13-06-2004)
Kommentar
Fra : Casper Bang


Dato : 13-06-04 10:47

> I toppen af hvilken fil?

ASP filen du vil tvinge til at blive downloadet



Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 14:21

"Casper Bang"
> > I toppen af hvilken fil?
>
> ASP filen du vil tvinge til at blive downloadet

Ok

> >men når de hedder *.asp, *.htm(l) *.txt så åbner
>>browseren jo bare filerne.
>>Er der en måde jeg kan tvinge browseren til at downloade filerne?

Hvad gør jeg så med de to andre formater html og txt?

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.




Casper Bang (13-06-2004)
Kommentar
Fra : Casper Bang


Dato : 13-06-04 14:39

> Hvad gør jeg så med de to andre formater html og txt?

Hmm.. så er en mulighed måske at få en ASP side til at sende txt'en til
browseren... Jeg søge på google efter "force download in asp", og fandt frem
til det her blandt andet:
http://www.sitepoint.com/forums/showthread.php?postid=492934



Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 17:23

> http://www.sitepoint.com/forums/showthread.php?postid=492934

Det ser meget godt ud, men kan umidelbart ser det ikke ud til at kunne
bruges sammen med min kode som er den her:

>>strSQL = "Select filnavn from opload where rettighed = '" &
>>Request.Querystring("omraade") & "'"
>>
>>Set rs = Conn.Execute(strSQL)
>>
>>If rs.EOF or rs.BOF Then
>>
>>Response.Write "<h2>Der er ingen filer til denne arbejdsgren:</h2>"
>>
>>else
>> do while not RS.EOF
>> Response.Write "<a href='upload/" & RS("filnavn") & "'>" &
>>RS("filnavn") & "</a><br><br>"
>> RS.MoveNext
>> loop
>>RS.Close
>>
>>Set RS = Nothing
>>
>>End If
>>


eller tager jeg helt fejl?

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



Casper Bang (13-06-2004)
Kommentar
Fra : Casper Bang


Dato : 13-06-04 17:43

> >>strSQL = "Select filnavn from opload where rettighed = '" &
> >>Request.Querystring("omraade") & "'"

Du skal passe på SQL injection :)
Replace ' med '' (en gnyf med to gnyffer), og sikkerhedsproblemet er løst.
For mere info, søg efter SQL injection på google.


> eller tager jeg helt fejl?

Jeg tror godt det kan lade sig gøre.
Hvis du i toppen af din side smider koden fra post #9, og under denne al
koden fra #17 burde du kunne klare det rimeligt nemt.
Så kalder du bare for eksempel:
SendFileToBrowser("d:/minfil.txt", True)

Det burde kunne gøre det du leder efter.



Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 17:54


> Jeg tror godt det kan lade sig gøre.
> Hvis du i toppen af din side smider koden fra post #9, og under denne
al
> koden fra #17 burde du kunne klare det rimeligt nemt.
> Så kalder du bare for eksempel:
> SendFileToBrowser("d:/minfil.txt", True)

Er ikke helt med på hvad du mener med post#9 og #17...
og heller ikke SendFileToBrowser... har ikke arbejdet med denne side af
asp før...
--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



Casper Bang (13-06-2004)
Kommentar
Fra : Casper Bang


Dato : 13-06-04 18:29

> Er ikke helt med på hvad du mener med post#9 og #17...

Den adresse fra før... det er et forum; der er et nummer ud for hver post.



Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 18:57

Virker stadigt ikke ... jeg giver op ...prøver at finde en anden løsning

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



Jens Gyldenkærne Cla~ (13-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-06-04 19:35

Casper Bang skrev:

>> Er ikke helt med på hvad du mener med post#9 og #17...
>
> Den adresse fra før... det er et forum; der er et nummer ud
> for hver post.

Nej - ikke i mit program (o.k. - der er et artikelnummer, men det
er ikke ens fra newsserver til newsserver, og det er hos mig numre
som 5585, 5583 o.l.)

Brug messageID (kan findes i headeren) eller evt. afsender plus
tidspunkt for at identificere tidligere indlæg i tråden.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Casper Bang (13-06-2004)
Kommentar
Fra : Casper Bang


Dato : 13-06-04 21:27

> Nej - ikke i mit program (o.k. - der er et artikelnummer, men det
> er ikke ens fra newsserver til newsserver, og det er hos mig numre
> som 5585, 5583 o.l.)
>
> Brug messageID (kan findes i headeren) eller evt. afsender plus
> tidspunkt for at identificere tidligere indlæg i tråden.

Vi taler forbi hinanden :) Jeg referede til det link jeg postede tidligere:
http://www.sitepoint.com/forums/showthread.php?postid=492934
og til de posts i det forum.



Jens Gyldenkærne Cla~ (13-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-06-04 23:18

Casper Bang skrev:

> Vi taler forbi hinanden :) Jeg referede til det link jeg
> postede tidligere:

Ah - det havde jeg overset. Beklager.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 19:15

Jeg har prøvet at søge på google og den løsning de fleste har kommet med
ser sådan her ud:

response.addHeader "content-disposition", "attachment;
filename=filename.ext"

eller ligende.
Jeg sætter den ind i min kode sådan her:

ConnString
="Driver={MySQL};SERVER=localhost;DATABASE=viborgip_dk;UID=viborgip_dk;P
ASSWORD=vision"
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = server.CreateObject("ADODB.recordset")
Conn.Open ConnString

strSQL = "Select filnavn from opload where rettighed = '" &
Request.Querystring("omraade") & "'"

Set rs = Conn.Execute(strSQL)

response.addHeader "content-disposition", "attachment;filename=" &
rs("filnavn") & ""

strSQL = "Select filnavn from opload where rettighed = '" &
Request.Querystring("omraade") & "'"

Set rs = Conn.Execute(strSQL)



If rs.EOF or rs.BOF Then

Response.Write "<h2>Der er ingen filer til denne arbejdsgren:</h2>"

else

Response.Write "<h2>Her er filerne der hører til arbejdsgrenen " &
Request.Querystring("omraade") & " :</h2> "

do while not RS.EOF

Response.Write "<a href='upload/" & RS("filnavn") & "'><div
id='filer'>" & RS("filnavn") & "</div></a><br><br>"

RS.MoveNext
loop
RS.Close

Set RS = Nothing

End If



mit problem er bare at når jeg går ind på siden begynder den straks at
downloade den første fil, men jeg har flere filer på siden. Så hvad gør
jeg for at den ikke skal starte automatisk men først når jeg trykker på
linket?



--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.
"Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en meddelelse
news:40ca2bfc$0$3051$14726298@news.sunsite.dk...
> Jeg har nogle filer som skal downloades af min bruger og det går fint
så længe
> at de hedder *.doc eller *.xls, men når de hedder *.asp, *.htm(l)
*.txt så åbner
> browseren jo bare filerne.
> Er der en måde jeg kan tvinge browseren til at downloade filerne?
>
> Mine links til filerne ser sådan her ud hvis det har nogen betydning:
>
> strSQL = "Select filnavn from opload where rettighed = '" &
> Request.Querystring("omraade") & "'"
>
> Set rs = Conn.Execute(strSQL)
>
> If rs.EOF or rs.BOF Then
>
> Response.Write "<h2>Der er ingen filer til denne arbejdsgren:</h2>"
>
> else
> do while not RS.EOF
> Response.Write "<a href='upload/" & RS("filnavn") & "'>" &
> RS("filnavn") & "</a><br><br>"
> RS.MoveNext
> loop
> RS.Close
>
> Set RS = Nothing
>
> End If
>
> På forhånd Tak!
>
> --
> Simon Moore Højer
>
> Man lære så længe man lever
> Når man ikke længere lære, lever man ikke mere.
>
>



Jens Gyldenkærne Cla~ (13-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-06-04 19:42

Simon Moore Højer skrev:

> Jeg har prøvet at søge på google og den løsning de fleste har
> kommet med ser sådan her ud:
>
> response.addHeader "content-disposition", "attachment;
> filename=filename.ext"

Jep - men det skal kombineres med streaming for at virke.


> mit problem er bare at når jeg går ind på siden begynder den
> straks at downloade den første fil,

Er du sikker på at det er den første fil der downloades? (prøv at
lade browseren gemme filen og åbn den med et passende program).

Jeg tror at det er din asp-fil som browseren vil gemme under det
første filnavn i databasen - men er dog ikke helt sikker.

> siden. Så hvad gør jeg for at den ikke skal starte automatisk
> men først når jeg trykker på linket?

Så vidt jeg kan regne ud skal du lave en særlig fil der bruges til
at downloade med (fx download.asp). Den fil kan du så kalde med et
filnavn (eller evt. bare et id-nummer fra databasen) - og download-
filen skal så dels sætte den nævnte header og dels streame
indholdet af den ønskede fil til browseren.

NB: Hvis du vil have mere hjælp herfra vil jeg foreslå dig at kigge
på min signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 19:49

> Er du sikker på at det er den første fil der downloades? (prøv at
> lade browseren gemme filen og åbn den med et passende program).
>
> Jeg tror at det er din asp-fil som browseren vil gemme under det
> første filnavn i databasen - men er dog ikke helt sikker.
>
Har testet det... blev nemlig også selv i tvivl...det er den første fil.

> > siden. Så hvad gør jeg for at den ikke skal starte automatisk
> > men først når jeg trykker på linket?
>
> Så vidt jeg kan regne ud skal du lave en særlig fil der bruges til
> at downloade med (fx download.asp). Den fil kan du så kalde med et
> filnavn (eller evt. bare et id-nummer fra databasen) - og download-
> filen skal så dels sætte den nævnte header og dels streame
> indholdet af den ønskede fil til browseren.

Det bliver jeg nok nød til. Tak for hjælpen.



Simon Moore Højer (13-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 13-06-04 23:13

> > Jeg har prøvet at søge på google og den løsning de fleste har
> > kommet med ser sådan her ud:
> >
> > response.addHeader "content-disposition", "attachment;
> > filename=filename.ext"
>
> Jep - men det skal kombineres med streaming for at virke.
>
>
> > mit problem er bare at når jeg går ind på siden begynder den
> > straks at downloade den første fil,
>
> Er du sikker på at det er den første fil der downloades? (prøv at
> lade browseren gemme filen og åbn den med et passende program).
>
> Jeg tror at det er din asp-fil som browseren vil gemme under det
> første filnavn i databasen - men er dog ikke helt sikker.
>

Underligt nok så gør den det nu, men den gjorde det ikke før.


> > siden. Så hvad gør jeg for at den ikke skal starte automatisk
> > men først når jeg trykker på linket?
>
> Så vidt jeg kan regne ud skal du lave en særlig fil der bruges til
> at downloade med (fx download.asp).

Har lavet download.asp, den ser sådan her ud.

<%
response.addHeader "content-disposition", "attachment;filename=" &
Request.Querystring("fil") & ""
%>

<html>
<head>

<link rel="stylesheet" type="text/css" href="popup.css">

</head>
<body>

<h1 align="center">Downloader</h1>
<table align="center"><tr><td>
<%
Response.Write "<br>Hvis download ikke starter automatisk så tryk her:
<a href='upload/" & Request.Querystring("fil") & "'>Download</a>"
%>

men som du tidlige nævnte så gemmer den ikke den ønskede fil, men
download.asp med det filnavn som hentes i Request.Querystring("fil").

> Den fil kan du så kalde med et
> filnavn (eller evt. bare et id-nummer fra databasen) - og download-
> filen skal så dels sætte den nævnte header og dels streame
> indholdet af den ønskede fil til browseren.

Hvordan streamer jeg filen til browseren så jeg kan downloade den
ønskede fil?

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.




Jens Gyldenkærne Cla~ (13-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-06-04 23:31

Simon Moore Højer skrev:

> Har lavet download.asp, den ser sådan her ud.
>
> <%
> response.addHeader "content-disposition",
> "attachment;filename=" & Request.Querystring("fil") & ""
> %>

Hertil ser det fint ud.
>
> <html>
> <head>


....men her går det galt. Download.asp skal ikke indeholde html-kode
- den skal jo blot generere en download-dialog i browseren.

> Hvordan streamer jeg filen til browseren så jeg kan downloade
> den ønskede fil?

På siden her er det gjort ved hjælp af en speciel komponent:
<http://kortlink.dk/6nv>. Så vidt jeg kan se kan man også lave det
med en standardkomponent - men det er ikke noget jeg selv har
prøvet.

Under alle omstændigheder er det vigtigt at forstå at download.asp
ikke laver et link til en fil, men sender hele filen direkte til
browseren (ved streaming). Det er kun på denne måde at content-
manipulationen i headers betyder noget.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Simon Moore Højer (14-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 14-06-04 12:20

> > Hvordan streamer jeg filen til browseren så jeg kan downloade
> > den ønskede fil?
>
> På siden her er det gjort ved hjælp af en speciel komponent:
> <http://kortlink.dk/6nv>. Så vidt jeg kan se kan man også lave det
> med en standardkomponent - men det er ikke noget jeg selv har
> prøvet.

Jeg får denne fejl når jeg prøver at bruge deres kode

Error Type:
Sun ONE ASP VBScript runtime (0x800A01AD)
Cannot create object: 'FileTransfer.BinaryRead'
/login/download.asp, line 9


linie 9

Set objBinaryRead = CreateObject("FileTransfer.BinaryRead")


> Under alle omstændigheder er det vigtigt at forstå at download.asp
> ikke laver et link til en fil, men sender hele filen direkte til
> browseren (ved streaming). Det er kun på denne måde at content-
> manipulationen i headers betyder noget.

det kan godt være jeg er lidt langsomt opfattende, men jeg er ikke
sikker på jeg helt hat forstået hvad i mener med 'streame'.



Jens Gyldenkærne Cla~ (14-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-06-04 14:41

Simon Moore Højer skrev:

> Jeg får denne fejl når jeg prøver at bruge deres kode
>
> Error Type:
> Sun ONE ASP VBScript runtime (0x800A01AD)
> Cannot create object: 'FileTransfer.BinaryRead'

Der er ikke installeret den komponent som eksemplet benytter. Prøv
at finde et eksempel der benytter en anden kode.


> det kan godt være jeg er lidt langsomt opfattende, men jeg er
> ikke sikker på jeg helt hat forstået hvad i mener med
> 'streame'.

Ved et normalt download henviser man til en fil og lader browseren
om at hente den selv. Når man streamer, stikker man i stedet en
støvsugerslange ned i filposen og forbinder den anden ende af
slangen til browseren. Man leverer altså filen "i bidder".

Det kan dels være for at give modtageren (browseren) mulighed for
at behandle den modtagne fil efterhånden som den ankommer. Det er
fx tilfældet når man streamer lyd- eller video-klip. I stedet for
at browseren/brugeren skal vente en halv time på at hente 200 MB,
kan den/han/hun i stedet begynde at afspille det efter kort tid,
mens der stadig hentes mere og mere.

En anden mulighed er at lave sikret download - dvs. sørge for at fx
kun registrerede brugere kan hente en given fil. Et almindeligt
asp-login kan ikke beskytte andet end asp-filer - hvis der er en
webadresse til en downloadfil, kan den også hentes forudsat at man
kender adressen. Ved at bruge streaming kan download.asp hente
filerne fra et sikret område (uden adgang via http) og via
støvsugerslangen sende dem videre til browseren.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Simon Moore Højer (14-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 14-06-04 15:33

> > det kan godt være jeg er lidt langsomt opfattende, men jeg er
> > ikke sikker på jeg helt hat forstået hvad i mener med
> > 'streame'.
>
> Ved et normalt download henviser man til en fil og lader browseren
> om at hente den selv. Når man streamer, stikker man i stedet en
> støvsugerslange ned i filposen og forbinder den anden ende af
> slangen til browseren. Man leverer altså filen "i bidder".
>
> Det kan dels være for at give modtageren (browseren) mulighed for
> at behandle den modtagne fil efterhånden som den ankommer. Det er
> fx tilfældet når man streamer lyd- eller video-klip. I stedet for
> at browseren/brugeren skal vente en halv time på at hente 200 MB,
> kan den/han/hun i stedet begynde at afspille det efter kort tid,
> mens der stadig hentes mere og mere.
>
> En anden mulighed er at lave sikret download - dvs. sørge for at fx
> kun registrerede brugere kan hente en given fil. Et almindeligt
> asp-login kan ikke beskytte andet end asp-filer - hvis der er en
> webadresse til en downloadfil, kan den også hentes forudsat at man
> kender adressen. Ved at bruge streaming kan download.asp hente
> filerne fra et sikret område (uden adgang via http) og via
> støvsugerslangen sende dem videre til browseren.

Tusind tak for forklaingen, nu tror jeg godt jeg forstår det.

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



Simon Moore Højer (14-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 14-06-04 13:17

> Jeg har nogle filer som skal downloades af min bruger og det går fint
så længe
> at de hedder *.doc eller *.xls, men når de hedder *.asp, *.htm(l)
*.txt så åbner
> browseren jo bare filerne.
> Er der en måde jeg kan tvinge browseren til at downloade filerne?
>

Jeg opgiver, det er for besværligt for så lidt. Jeg tager den gammeldags
metode hvor brugeren bliver bedt om at højreklikke og vælge 'gem
destination som...'

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.



Jesper Stocholm (14-06-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 14-06-04 14:11

Simon Moore Højer wrote:

>> Jeg har nogle filer som skal downloades af min bruger og det går fint
>> så længe
>> at de hedder *.doc eller *.xls, men når de hedder *.asp, *.htm(l)
>> *.txt så åbner browseren jo bare filerne.
>> Er der en måde jeg kan tvinge browseren til at downloade filerne?
>
> Jeg opgiver, det er for besværligt for så lidt. Jeg tager den gammeldags
> metode hvor brugeren bliver bedt om at højreklikke og vælge 'gem
> destination som...'

Hvis du har lidt tålmodighed, så har jeg noget kode, der gør det du ønsker
- og som er noget mere overskuelig end den kode, som Casper sendte et link
til. Problemet er blot, at jeg har glemt mit password til den FTP-server
jeg har mit domæne liggende på, så det kan tidligst blive i morgen, at jeg
kan sende det her til gruppen.

I mellemtiden kan du kigge lidt på [1], der er en søgning i denne gruppe på
"stream" samt "contenttype"

[1] http://shor.ter.dk/828282468

--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Jesper Stocholm (14-06-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 14-06-04 20:03

Jesper Stocholm wrote :

> Hvis du har lidt tålmodighed, så har jeg noget kode, der gør det du
> ønsker - og som er noget mere overskuelig end den kode, som Casper
> sendte et link til. Problemet er blot, at jeg har glemt mit password
> til den FTP-server jeg har mit domæne liggende på, så det kan tidligst
> blive i morgen, at jeg kan sende det her til gruppen.

Jeg bruger nedenstående kode på en side, der kaldes med fx download.asp?
file=minfil.pdf

file = request.querystring("file")

filearray = split(file,".")
extension = filearray(1)
SELECT case lcase(extension)
CASE "pdf"
Response.ContentType = "application/octet-stream"
CASE "zip"
Response.ContentType = "application/x-zip-compressed"
CASE "sty"
Response.ContentType = "application/x-msdownload"
CASE ELSE
Response.ContentType = "application/x-msdownload"
END SELECT

set oStream = server.createobject("ADODB.Stream")
oStream.Type = 1 'adTypeBinary
oStream.Open

oStream.LoadFromFile (server.mappath(file))

Response.AddHeader "content-disposition", "attachment; filename=" & file
response.BinaryWrite oStream.Read

oStream.Close
set oStream = nothing

Du kan se den i "action" på http://www.stocholm.dk/pmp/downloads/

--
Jesper Stocholm
http://stocholm.dk
Linux advocacy how-to:
http://www.datasync.com/~rogerspl/Advocacy-HOWTO-5.html

Simon Moore Højer (14-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 14-06-04 21:23

Jeg får følgende fejl:

Error Type:
Server object, ASP 0177 (0x800401F3)
System message, messageid = 0x800401f3
/login/download.asp, line 31


Linie 31 og frem er:

> set oStream = server.createobject("ADODB.Stream")
> oStream.Type = 1 'adTypeBinary
> oStream.Open
>
> oStream.LoadFromFile (server.mappath(file))
>
> Response.AddHeader "content-disposition", "attachment; filename=" &
file
> response.BinaryWrite oStream.Read
>
> oStream.Close
> set oStream = nothing




Simon Moore Højer (14-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 14-06-04 21:24

"Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en meddelelse
news:40ce0912$0$23878$14726298@news.sunsite.dk...
> Jeg får følgende fejl:
>
> Error Type:
> Server object, ASP 0177 (0x800401F3)
> System message, messageid = 0x800401f3
> /login/download.asp, line 31
>
>
> Linie 31 og frem er:
>
> > set oStream = server.createobject("ADODB.Stream")
> > oStream.Type = 1 'adTypeBinary
> > oStream.Open
> >
> > oStream.LoadFromFile (server.mappath(file))
> >
> > Response.AddHeader "content-disposition", "attachment; filename=" &
> file
> > response.BinaryWrite oStream.Read
> >
> > oStream.Close
> > set oStream = nothing

Min asp-fortolker understøtter ikke ADODB.Stream



Jesper Stocholm (15-06-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 15-06-04 09:01

Simon Moore Højer wrote:

> "Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en meddelelse
> news:40ce0912$0$23878$14726298@news.sunsite.dk...
>> Jeg får følgende fejl:
>>
>> Error Type:
>> Server object, ASP 0177 (0x800401F3)
>> System message, messageid = 0x800401f3
>> /login/download.asp, line 31

> Min asp-fortolker understøtter ikke ADODB.Stream

ok - er det en SUNs ChiliASP du har på maskinen? Hvis det er tilfældet, så
er jeg bange for, at jeg ikke kan hjælpe dig med det.



--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Simon Moore Højer (15-06-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 15-06-04 12:31

> ok - er det en SUNs ChiliASP du har på maskinen? Hvis det er
tilfældet, så
> er jeg bange for, at jeg ikke kan hjælpe dig med det.

Det er det desværre ja, men ellers MANGE tak for hjælpen.

--
Simon Moore Højer

Man lære så længe man lever
Når man ikke længere lære, lever man ikke mere.





Jens Gyldenkærne Cla~ (15-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-06-04 10:28

Jesper Stocholm skrev:

> Jeg bruger nedenstående kode på en side, der kaldes med fx
> download.asp? file=minfil.pdf

Et par kommentarer til koden.


> file = request.querystring("file")

Jeg vil afgjort anbefale at man validerer input så man ikke bare
kan hente enhver fil fra dit site. Jeg lavede lige forsøget (for at
afgøre om der var en sikring jeg havde overset), og kunne uden
problemer hente flere af dine asp-filer. Det er måske ikke så
heldigt.

Man kan fx tjekke at file ikke indeholder "/" eller "..", eller
tjekke at det kun er filer med en godkendt endelse der må hentes.


> extension = filearray(1)

Mindre problem, men ovenstånde vil give et forkert resultat hvis
man beder om filen install.tar.gz. Det er ret enkelt at rette:

   extension = filearray(Ubound(filearray))

(tag det sidste element i arrayet).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (15-06-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 15-06-04 12:39

Jens Gyldenkærne Clausen wrote:

> Jesper Stocholm skrev:
>
>> Jeg bruger nedenstående kode på en side, der kaldes med fx
>> download.asp? file=minfil.pdf
>
> Et par kommentarer til koden.
>
>> file = request.querystring("file")
>
> Jeg vil afgjort anbefale at man validerer input så man ikke bare
> kan hente enhver fil fra dit site. Jeg lavede lige forsøget (for at
> afgøre om der var en sikring jeg havde overset), og kunne uden
> problemer hente flere af dine asp-filer. Det er måske ikke så
> heldigt.
>
> Man kan fx tjekke at file ikke indeholder "/" eller "..", eller
> tjekke at det kun er filer med en godkendt endelse der må hentes.
>
>> extension = filearray(1)
>
> Mindre problem, men ovenstånde vil give et forkert resultat hvis
> man beder om filen install.tar.gz. Det er ret enkelt at rette:
>
> extension = filearray(Ubound(filearray))
>
> (tag det sidste element i arrayet).

Dette er hermed taget ad notam ... :) Det er MEGET lang tid siden jeg
lavede siden, men man bliver naturligvis aldrig så klog, at man ikke kan
lære noget.

Jeg har tilføjet et par checks i starten af filen, som skulle kunne holde
de fleste nysgerrige væk fra de vigtige filer på mit site.

file = request.querystring("file")

if Left(file,2) = ".." then
Response.End
end if

if Left(file,1) = "/" then
Response.End
end if

if Left(file,1) = "\" then
Response.End
end if

Det skulle bevirke, at man kun kan hente filer i dette bibliotek og ikke
andre.

PS: tak for din mail.



--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste