Så er jeg tættere på en løsning:
Jeg har oprettet en mappen 'filer' udenfor www området på mit web.
Jedg har også oprettet en tracking.mdb med to tabeller, som holder styr på filer og deres dwl - lagt i en mappe db udenfor www.
jeg har lavet en filelist.asp, som lister de dummy filer, jeg har lagt ude i det beskyttede område. asp filen skal selfølgelig beskyttes med et pw ;-)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="
http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.Menu {
FONT-SIZE: 12px;
FONT-FAMILY: Verdana, Arial, Helvetica;
FONT-WEIGHT: bold;
COLOR: #FFFFFF;
}
.Tekst {
FONT-SIZE: 11px;
FONT-FAMILY: Verdana, Arial, Helvetica;
FONT-WEIGHT: normal;
COLOR: #000000;
}
-->
</style>
</head>
<body>
<%
ConnStr ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Request.ServerVariables("APPL_PHYSICAL_PATH") & "../" & "db" & "/" &"tracking.mdb"
set conn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
conn.open ConnStr
rs.open "SELECT * FROM listing ",conn
Response.write("<table CLASS='Tekst'>")
Response.write("<TR BGCOLOR='#0000CC'><TD COLSPAN='2'> <SPAN CLASS='Menu'><B>Filoversigt</B></SPAN></TD></TR>")
Response.write("<tr><td>Filnavn</td><td>Filtekst</td></tr>")
Do While Not rs.Eof
If Color = "#DDDDDD" Then
Color = "#BBBBBB"
Else
Color = "#DDDDDD"
End If
Response.write("<tr BGCOLOR=""" & Color & """><td>"& "<A HREF='test.asp?file="& "../" & "../" &"filer" & "/" &rs("FilNavn")&"'>"&rs("FilNavn")&"</A></td><td>"&rs("Filtekst")&"</td></tr>")
rs.MoveNext
Loop
Response.write("</table>")
rs.Close()
conn.Close()
set rs=nothing
set conn=nothing
session("fname")= "Henrik"
session("lname")= "Nielsen"
session("uid") = "hen"
%>
</body>
</html>
---------
test linket er her
http://web4it.dk/filhent/filelist.asp--
Filen som streamer filerne ud til modtageren har jeg blot kaldt test.asp. Det kører fint localt med der er lidt brok for andre filer end txt ude på webstedet - prøv selv.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
ConnStr ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Request.ServerVariables("APPL_PHYSICAL_PATH") & "../" & "db" & "/" &"tracking.mdb"
Response.Buffer=true
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
If trim(session("fname")) <> "" AND trim(session("lname")) <> "" THEN
fileName = server.mappath(request("file"))
tempFile=split(filename,"\")
dbFileName = tempFile(ubound(tempFile))
set conn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
conn.open ConnStr
rs.open "SELECT * FROM tracking WHERE 1=0",conn,2,2
rs.Addnew
rs("download")=request("file")
rs("username")=session("fname") & " " & session("lname")
rs("uid") = session("uid")
realdatetime= dateadd("h",-5,Now)
rs("date")=realdatetime
rs.update
session("totDownloads") = session("totDownloads") + 1
rs.Close()
conn.Close()
set rs=nothing
set conn=nothing
strParameter = request.querystring("file")
strFile = Right(strParameter,Len(strParameter)-instrrev(strParameter,"/"))
strPath = Left(strParameter, Len(strParameter) - Len(strFile) )
Call downloadFile( strFile,strFile,strPath)
Else
Response.write("There has been an error please log in again!")
End If
Function downloadFile( strFile, strDownloadFilename, strPath )
Dim strFilename,objStream,objFilesystem,objFilestream
Dim intFileLength
' get path of specified file
strFilename = Server.MapPath( strPath & strFile)
' clear the buffer
Response.Buffer = True
Response.Clear
' create stream
Set objStream = Server.CreateObject("ADODB.Stream")
' set as binary
objStream.Type = 1
objStream.Open
' check the file exists
Set objFilesystem = Server.CreateObject("Scripting.FileSystemObject")
if not objFilesystem.FileExists(strFilename) then
Response.Write("<h1>Fejl: </h1>" & strFilename & " Eksisterer Ikke!<p>")
Response.End
end if
' get length of file
Set objFilestream = objFilesystem.GetFile( strFilename )
intFilelength = objFilestream.size
' REMOVED PARENTHESES FROM strFileName
objStream.LoadFromFile strFilename
' CHANGED TO err.number then
if err.number then
Response.Write("<h1>Fejl: </h1>" & err.Description & "<p>")
Response.End
end if
'format strFileName
if Len( Trim(strDownloadFilename) ) > 0 then
strDownloadFilename = Trim( strDownloadFilename )
else
strDownloadFilename = objFilestream.name
end if
'<<<<<<<<<<<<<
strFileType = lcase(Right(strDownloadFilename, 4))
' Tiføj selv dine Content-Types Her
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case ".pdf"
ContentType = "application/pdf"
Case ".txt"
ContentType = "text/plain"
Case Else
'Håndterer alle andre filer
ContentType = "application/octet-stream"
End Select
'<<<<<<<<<<<<<<<
' send the headers to the users browser
Response.AddHeader "Content-Disposition", "attachment; filename=" & strDownloadFilename
Response.AddHeader "Content-Length", intFilelength
Response.Charset = "UTF-8"
Response.ContentType = ContentType
' output the file to the browser
Response.BinaryWrite objStream.Read
Response.Flush
' tidy up
objStream.close
set objStream = nothing
' COMMENTED OUT AS UNECESSARY
'objFilestream.Close
'Set objFilestream = Nothing
End Function
%>