Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ASP] file access

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is het mogelijk om met IIS 5 in te stellen dat een bepaalde file alleen te downloaden is door een ASP script en niet door gewoon het intikken van de url naar de file??

zo jaa zou ik graag weten hoe dat kan.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 29-11 11:29

gorgi_19

Kruimeltjes zijn weer op :9

Ja dat kan.

Stop de files in een directory die buiten de webroot ligt
Laat een asp-bestand deze bestanden ophalen.

In dit bestand:
1. Zet het contenttype goed
2. door middel van het FileSystem object: open het bestand
3. Response.Binarywrite de inhoud ervan
En klaar

Een gedeelte staat beschreven op:

http://www.asp101.com/samples/download_sample.asp

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ik kan een file laten zien met de volgende code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")

    Dim stream
        Set stream = fso.OpenTextFile(fileName)

    Dim lineText

    Do While Not stream.AtEndOfStream
        lineText = stream.ReadLine
        lineText = Replace (lineText,"<","&lt;")
        lineText = Replace (lineText,">","&gt;")
        Response.Write lineText & vbcrlf
    Loop

    stream.Close
    Set stream = Nothing
    Set fso = Nothing

Ik wil het nu zo hebben dat hij deze in een download window zet.

Waarschijnlijk moet ik het content type veranderen in Response.ContentType = "application/octet-stream" en het volgende weg laten:
code:
1
2
3
4
5
6
7
8
Dim lineText

    Do While Not stream.AtEndOfStream
        lineText = stream.ReadLine
        lineText = Replace (lineText,"<","&lt;")
        lineText = Replace (lineText,">","&gt;")
        Response.Write lineText & vbcrlf
    Loop

Maar waarschijnlijk vergeet ik nu een regel om hem aan te bieden aan de browser.

Wie kan mij hier wat uitleg over geven

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 29-11 11:29

gorgi_19

Kruimeltjes zijn weer op :9

Even kijken... ;)

Ik mis bovenaan je script:

code:
1
2
3
4
5
6
7
8
9
10
Set objFileSystem = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(Path)
' Pak het te downloaden bestand, we hebben straks de grootte nodig.

Response.AddHeader "Content-Disposition","attachment; filename=" & name
Response.AddHeader "content-length", objFile.Size
' Dwingen om een bestand te downloaden, werkt niet bij sommige versies van IE5

Response.ContentType = "application/octet-stream"
' En het contenttype. Je kan hier ook bijvoorbeeld "image/gif" neerzetten.


En ik denk dat je zo wel een stuk verder komt

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Zo ben ik idd een stuk verder..

Ik heb nu alleen een probleem dan ik een permission denied krijg bij een file buiten mijn Webroot. Dit gebeurt bij regel :Response.AddHeader "content-length", objFile.Size

Op deze file heeft op NTFS Everyone rechten (full control om te testen).
Het script werkt wel als ik een file pak die in de webroot staat (via c:\inetpub\website\file.exe)

Het lukt me wel om een file (c:\test.txt) te displayen via het script in de eerste post dus het moet mogelijk zijn om bij de file te komen

nog iemand suggesties??

Verwijderd

Topicstarter
Iemand die dit weet?

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 29-11 07:56

Basszje

Reisvaap!]

Ja je moet kijken of je IUSR_ANONYMOUS ( in die buurt ) rechten heeft op die bestanden, dat is nl de user die die ziet als je met ASP bestanden ophaalt.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Ik heb nu een probleem dat de file die ik download er corrupt uitkomt.
Hij download de file wel alleen die kan ik vervolgens niet meer runnen.. Iemand een idee. Hieronder staat de code.


Dim mFile
mFile = Trim(Request.QueryString("file"))

Response.contenttype = "application/octet-stream"

'Custom server component
Set objBinFile = Server.CreateObject("ASPBinFile.clsASPBinFile")

mStream = objBinFile.BinFileRead(mFile)
Response.Addheader "Content-Disposition", "inline; filename=" & "testfile.exe"

Response.CacheControl = "public"

Response.binarywrite mstream
Set objBinFile = Nothing
Response.End
Pagina: 1