Avatar billede fun22 Nybegynder
08. september 2007 - 18:02 Der er 7 kommentarer og
1 løsning

Opbevaring af billeder

Hej

Jeg skal til at lave et galleri, og er kommet lidt i tvivl om hvorvidt jeg bedst gemmer billederne..

Hvis jeg laver en mappe til hvert galleri, hvilket jo vil virke fint, men så er mit problem, at jeg har nogen gallerier som så er adgans beskyttet.. Der kan man jo snildt få fat i billederne selvom man ikke har adgangskoden..

Hvis man gemmer billederne i databasen, bliver den jo kæmpe og langsomt eller hvad??

Så jeg er lidt på herrens mark..
Avatar billede thesurfer Nybegynder
08. september 2007 - 18:35 #1
Det nemmeste du kan gøre, er ikke at linke direkte til billederne, men via en aspx fil.

Eksempel:

<img src="hentbillede.aspx?id=5">

Filen hentbillede.aspx læser billede-filen, den faktisk fil der ligger på serveren, og udskriver outputtet til browsere, med den korrekte header..

Jeg har engang lavet det i ASP (det man nu kalder "classic"), men har ikke lavet det i ASP.NET..

Jeg ser lige om jeg kan finde scriptet..

Hvis jeg finder scriptet, skal koden "bare oversættes" til f.eks. C#, VB.NET eller J#, afhængigt af hvilket prog du programmerer i..
Avatar billede thesurfer Nybegynder
08. september 2007 - 18:38 #2
Du får den bid, der faktisk læser billedet og sender det til browseren..

Det er den del jeg ikke har lavet..

Scriptet bruges sådan her:

DownloadFile("stien til billedet på serveren, med brug af Server.Mappath(...)")

        Private Sub DownloadFile(file)
            '--declare variables
            Dim strAbsFile
            Dim strFileExtension
            Dim objFSO
            Dim objFile
            Dim objStream
            '-- set absolute file location
            strAbsFile = Server.MapPath(file)
            '-- create FSO object to check if file exists and get properties
            Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
            '-- check to see if the file exists
            If objFSO.FileExists(strAbsFile) Then
                Set objFile = objFSO.GetFile(strAbsFile)
                '-- first clear the response, and then set the appropriate headers
                Response.Clear
                '-- the filename you give it will be the one that is shown
                ' to the users by default when they save
                Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
                Response.AddHeader "Content-Length", objFile.Size
                Response.ContentType = "application/octet-stream"
                Set objStream = Server.CreateObject("ADODB.Stream")
                objStream.Open
                '-- set as binary
                objStream.Type = 1
                Response.CharSet = "UTF-8"
                '-- load into the stream the file
                objStream.LoadFromFile(strAbsFile)
                '-- send the stream in the response
                Response.BinaryWrite(objStream.Read)
                objStream.Close
                Set objStream = Nothing
                Set objFile = Nothing
            Else 'objFSO.FileExists(strAbsFile)
                Response.Clear
                Response.Write("No such file exists: " & file)
            End If
            Set objFSO = Nothing
        End Sub
Avatar billede thesurfer Nybegynder
08. september 2007 - 18:40 #3
Hvis du undrer dig over hvorfor du skal bruge metoden hentbillede.aspx, er det fordi du kan bruge hentbillede.aspx til at undersøge, om brugeren må have lov til at se billedet.. dvs, om brugeren er logget ind og har de nødvendige rettigheder..
Avatar billede karsten_larsen Praktikant
08. september 2007 - 18:45 #4
Det kommer an på hvordan IIS er sat op.

www.mitdomain.dk/galleri/ vil ikke vise oversigt af filer hvis det er sat korrekt op.

Problemet er hvis man først har fået det direkte link, så kan man altid linke til det. Prøv at se på dette link http://activedeveloper.dk/artikler/default.asp?articleid=321 (godt nok asp) men ideen kan vel overføres.

Ellers kan du vil lave en temp mappe med billeder, som slettes efter brug.

:-) karsten_larsen
Avatar billede fun22 Nybegynder
08. september 2007 - 20:39 #5
Thesurfer >> Jeg har en fil som udskriver mine billeder, men jeg havde ikke lige tænkt på at jeg kunne bruge den til at lave adgangskonrtol.. Så smid et svar ;)

Kan du forresten svare mig på hvorfor det her ikke virker i en UserControle?

If User.Identity.Name.Length < 1 Then
            Response.Redirect("~/User/Login.aspx?ReturnURL=" & Request.Url.PathAndQuery.ToString())
        End If

Den siger at User ikke er defineret..
Avatar billede thesurfer Nybegynder
08. september 2007 - 20:57 #6
Jeg har ikke arbejdet med UserControls før..

Uden at se hele (eller det meste af) din kode, vil jeg gætte på at du mangler at definerer den som en type..

Som i: <klassetype> <variabel> = ny instans af <klassetype>

Eksempel med en klasse ("Person") der tager en string som parameter (navnet på personen):

Person p = new Person("Hans");

- Svar.
Avatar billede fun22 Nybegynder
08. september 2007 - 22:33 #7
Nej men det virker jo fint på en alm. aspx side..
Avatar billede ieconfig Nybegynder
09. september 2007 - 22:14 #8
når du skal fange Request, Response osv. uden for din Page nedarvede side, skal du bruge HttpContext.Current for at fange disse objekter.

altså: Response.Redirect = HttpContext.Current.Response.Redirect
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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