"Kurt G" <kurt_g@guldbaek.net> wrote in message 
news:473f225d$0$90267$14726298@news.sunsite.dk...
> Det er da et tilbud, som man ikke kan sidde overhørig. Det er altid godt 
> med eksempler, så jeg vil gerne sige jatak.
> Jeg har pga af andet endnu ikke startet med den del af projektet!
>
> Mvh Kurt
>
Mit forslag er at du streamer filen der skal downloades til brugeren.
På den måde kan dine brugere heller ikke se den komplette sti til filen og 
hente den vej... 
 
Lav en fil med nedenstående indhold og kald den f.eks. getfile.asp.
Dette er filen der henter og streamer filen til brugeren, hvis filen findes, 
ellers går den til en fejlside.
Findes filen, lægges der desuden 1 til antal downloads, eller der oprettes 
en ny txt-fil med indhold på 1, hvis filen ikke tidligere har været hentet.
Log filen ligger i dette tilfælde i /downloads/logs, som skal have 
skriverettigheder.
getfil.asp:
--------------------------------------
<%
' Get file details
FileName = server.HTMLEncode(Trim(cstr("" & request("FiN"))))
' create stream object
on error resume next
Set GetFile = Server.CreateObject("ADODB.Stream")
GetFile.Type = 1
GetFile.Open
GetFile.LoadFromFile Server.Mappath("\download\filer\"&FileName)
If Err.number = 0 Then
  Response.Clear
  Response.ContentType = "application/octet-stream"
  Response.AddHeader "Content-Disposition", "attachment; filename="&FileName
  Response.AddHeader "Content-Transfer-Encoding","binary"
  'Response.BinaryWrite GetFile.Read
 do while not GetFile.EOS
   '3670016 = 3.5 MB (the IIS limit is 4 MB)
  response.binaryWrite GetFile.read(3670016)
  response.flush
 loop
  GetFile.Close
  Set GetFile = Nothing
  Response.End()
' Denne del er tællingen af downloads
Set ObjCounterFile = Server.CreateObject("Scripting.FileSystemObject")
 CounterFile = Server.MapPath ("/download/logs/" & FileName & ".txt")
 Set ReadCounterFile= ObjCounterFile.OpenTextFile (CounterFile, 1, True)
  If Not ReadCounterFile.AtEndOfStream Then
   CounterHits = Trim(ReadCounterFile.ReadLine)
   If CounterHits = "" Then CounterHits = 0
  Else
   CounterHits = 0
  End If
 ReadCounterFile.Close
 Set ReadCounterFile = Nothing
 CounterHits = CounterHits + 1
 Set WriteCounterFile= ObjCounterFile.CreateTextFile (CounterFile, True)
  WriteCounterFile.WriteLine(CounterHits)
 WriteCounterFile.Close
 Set WriteCounterFile = Nothing
Set ObjCounterFile = Nothing
Else '< Error
  GetFile.Close
  Set GetFile = Nothing
 'Ved fejl redirectes der til nedenstående side...
  Response.Redirect("/default.asp?alert=1")
End If
%>
--------------------------------------
Blot tilinfo, så er den del af koden lavet for at dele filen op i mindre 
bidder. Man kan højest sende lige under 4 mb afsted ad gangen og var den 
kode der ikke, ville du få fejl ved større filer...
 do while not GetFile.EOS
   '3670016 = 3.5 MB (the IIS limit is 4 MB)
  response.binaryWrite GetFile.read(3670016)
  response.flush
 loop
Nå, tilbage til selve linket til filen...
Et link til en fil ser således ud:
getfile.asp?FiN=Poster_Rabat_10.pdf
Hvor det der kommer efter FiN= er filens navn.
Håber det er til at gå til...
Ellers skriv! Jeg benyter selv den kdoe ret mange steder. Mest getfile-delen 
og lader så optællingen ske i database.
--
Thrane