"Jens U. K." <1jk2@3bsopatent4.dk> wrote in message
news:oif3c.1569$fC4.924@news.get2net.dk...
> "J Hansen" <jimmyh hansen> wrote in message
> news:8dep40ts1b1p41vvk7l5v5li3e3ttfgu0h@4ax.com...
> > On Mon, 8 Mar 2004 17:11:50 +0100, "Jens U. K." <1jk2@3bsopatent4.dk>
> > wrote:
[...]
> --- kode start ---
> <% set stmData = Server.CreateObject("ADODB.Stream")
> strFilePath = server.MapPath("/sikret mappe") & "\" &
> Request.QueryString("Billedenavn") & ".jpg"
> stmData.Open
> stmdata.Type = 1
> stmdata.LoadFromFile strFilePath
> Response.ContentType = "image/jpeg"
> Response.BinaryWrite stmData.Read
> stmData.Close
> set stmData = nothing
> Response.End %>
> --- kode slut ----
>
> I ovenstående kode fremkommer en fejl hvis filen ikke eksisterer, eller
> hvis scriptet ikke har læserettigheder til undermappen/filen.
>
> Jeg leder efter en løsning hvor serverside-scriptet får ekstra
rettigheder
> til at læse fra en undermappe på mit site. Den samme undermappe må ikke
> kunne tilgås fra en browserklient.
Et alternativ, der godt nok er besværligt, men som virker er at tilføje
"<!--" i starten af alle jpg-filerne med en binær editor el. lign.
Derefter omdøbes filen til endelsen asp. Scriptet ovenover ændres til at
kigge efter asp i stedet og der indsættes en stmdata.Read(4) umiddelbart
inden stmdata.read. Hvis nogen tilgår filen via den "direkte" url, vil de
måske få en asp-fejl om at en kommentar manglede en slutkommentar, men de
vil aldrig få fat i selve filen. Jeg vil tillade mig at vise en "pænt"
redigeret version og forbeholde mig rettighederne til ideen, hvis ikke en
anden altså allerede har fundet på det
Nedenstående kode virker ikke
kun for jpg.-filer! Hvis man f.eks. vil beskytte en pdf.-fil så benyttes
"application/pdf" bare som FileType. Det kræver selvfølgelig at en
pdf.-fil har fået tilføjet "<!--" i starten og at endelsen er ændret til
asp.
--- start kode ---
<%@ Language=VBScript %>
<% Option Explicit %>
<!-- #INCLUDE FILE="IsAuth.asp" -->
<%
REM Made by: /Jens Ulrik.
REM Please include this remark if
REM code is used in its whole or partly.
REM No support or warranty given.
dim strFilePath
dim stmData
set stmData = Server.CreateObject("ADODB.Stream")
strFilePath = server.MapPath("/SecuredFiles") & "\" & _
Replace(Request.QueryString("FileName"),"\","") & ".asp"
stmData.Open
stmdata.Type = 1 'binary
stmdata.LoadFromFile strFilePath
Response.ContentType = Request.QueryString("FileType") 'ex. "image/jpeg"
stmdata.Read(4)
Response.BinaryWrite stmData.Read
stmData.Close
set stmData = nothing
Response.End
%>
--- slut kode ---
"Isauth.asp" indeholder sædvanlig brugervalideringskode evfter eget valg.
PS: Der er ikke andre der i mellemtiden har udtænkt andre smartere
løsninger?
/Jens Ulrik