[ASP] File server met ASP

Pagina: 1
Acties:

  • CumpsD
  • Registratie: Oktober 2001
  • Laatst online: 29-08-2025
(typo in header, file serveN dus ;))

http://users.pandora.be/tr/sst/problem.txt

A question :)
Hoe kan ik een file (die opgegeven is via .asp?f=D:\bla.doc bijvoorbeeld)
laten downloaden door een browser?
die file staat dus NIET onder de webserver root, dus gewoon linken kan niet
vb hd layout:

code:
1
2
3
4
5
d:\
 |-site
 |   |-blaat
 |   `-blaat
 `--bla.doc



dinkje datk nu had:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<%
    If Request.QueryString("f") <> "" Then
  FileName = "D:" & Request.QueryString("f")
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set textStreamObject = fso.OpenTextFile(FileName, 1, False, False)

  FileContent = textStreamObject.ReadAll

  Response.Write FileContent
  Set textStreamObject = Nothing
  Set fso = Nothing
    End If
%>


nuttig? nah, enkel voor text files at te beelde :)

ken zelf niet genoeg asp =(

anyone an idea? :)

nieuwe (mislukte) pogingen :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%
    If Request.QueryString("f") <> "" Then
  FileName = "D:" & Request.QueryString("f")
  Set fso = Server.CreateObject("Scripting.FileSystemObject")
  Set textStreamObject = fso.OpenTextFile(FileName, 1, False, TristateUseDefault)

  'Response.ContentType="application/msword"
  Response.ContentType="text/html"

  Do While textStreamObject.AtEndOfStream = False
    Response.Write(textStreamObject.ReadLine)
  Loop

  'While not textStreamObject.AtEndOfStream
  '      Response.Write textStreamObject.ReadLine
  'Wend 
  Set textStreamObject = Nothing
  Set fso = Nothing
    End If
%>



de junk response van dit is bijvoorbeeld:
ÐÏࡱá&&&&&&Q…&&&& &&&&&&& &&& LQ(&&&/ &&ðð&6[ŒBasŒ1Normal.VCreatabl`False >Predecla'€€€€€€€l €žØe;0046}#| ,:Document=ThisDocument/&H00000000Name="Project"HelpContextID="0"CMG="585A82308_ðð/&&&&DPB="B9BB639464946494"GC="1A18C09320942094DF"[Host Extender Info]&H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000[Workspace]ThisDocument=0, 0, 0, 0, C+%%ðððð&6XSDPB="B9BB639464946494"GC="1A18C09320942094DF"[Host Extender Info]&H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000[Workspace]ThisDocument=0, 0, 0, 0, C&6[
saved als .doc is dat zelfs niets =)

[ Voor 10% gewijzigd door CumpsD op 20-12-2002 20:28 ]


Verwijderd

1) dit wil je niet .. je zet je hele server open voor iedereen die maar een filename goed raad...
2) als dit toch wil... stuur eerst een goede header naar de browser.. zodat ie weet dat ie geen html voor zijn kiezen krijgt
3) stuur een extra header zodat de sommige browsers ook nog weten dat het een download wordt.. (zoiets als content-disposition... google weet het wel)

Verwijderd

Verwijderd schreef op 20 December 2002 @ 20:28:
1) dit wil je niet .. je zet je hele server open voor iedereen die maar een filename goed raad...
2) als dit toch wil... stuur eerst een goede header naar de browser.. zodat ie weet dat ie geen html voor zijn kiezen krijgt
3) stuur een extra header zodat de sommige browsers ook nog weten dat het een download wordt.. (zoiets als content-disposition... google weet het wel)
en mogelijk wil je ook een binary write

  • CumpsD
  • Registratie: Oktober 2001
  • Laatst online: 29-08-2025
1/ + - ik ga ervanuit dat alle NTFS permissions goed staan waardoor dit niet echt een prob zou mogen zijn ;) (zou mogen belangrijkste in deze zin :))

2/ Houdt Response.Contenttype zich daar niet mee bezig?

3/ ff zien, ik krijg als die apllication ms word aanzet iig wel een download dinkje maar hij leest gewoon niet de hele file uit

tnx al voor de hulp

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:14

gorgi_19

Kruimeltjes zijn weer op :9

SirQ schreef op 20 December 2002 @ 20:48:
1/ + - ik ga ervanuit dat alle NTFS permissions goed staan waardoor dit niet echt een prob zou mogen zijn ;) (zou mogen belangrijkste in deze zin :))
Hou het er maar op dat in principe al je scripts nu downloadbaar zijn... ;)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • CumpsD
  • Registratie: Oktober 2001
  • Laatst online: 29-08-2025
hmm ok ;) maar dat kan ik wel nog uitsluiten gok ik door ergens bovenaan dat scriptje een check te doen op die string en dan response end te doen ofzo op dat moment?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:14

gorgi_19

Kruimeltjes zijn weer op :9

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

Is dit trouwens niet iets wat je bedoeld?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

daarbij kun je beter nog iets aan toevoegen waardoor de " " vervangen worden door "%20"

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit werkt voor mij:

Opmerkingen:

1) Snel "gestripte" code uit bestaande code. Heb niet getest, kan typo o.i.d in zitten
2) Compleet in-secure. Kan vanalles mee uitgevroten worden...
3) Min ADO 2.6 (geloof ik) vereist..
4) Use at own risk ;)

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%
Dim strFile, objStream

Response.Buffer = True

strFile = request.querystring("f")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1 'adTypeBinary
objStream.LoadFromFile (server.mappath(Application("DownloadDir")) & "\" & strFile)
With Response
    .AddHeader "Content-Disposition", "attachment; filename=" & strFile
    .Charset = "UTF-8"  ' In a Perfect World, Your Client would also have UTF-8 as the default  In Their Browser
    .ContentType = "application/download"
    .BinaryWrite objStream.Read
    .Flush
End with
objStream.Close
Set objStream = Nothing
%>

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Waarom maak je niet een virtuele webdir aan met een verwijzing naar de files in kwestie?

  • CumpsD
  • Registratie: Oktober 2001
  • Laatst online: 29-08-2025
Bedankt =)

ik heb dit nu:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<%
    If Request.QueryString("f") <> "" Then
        strFilename = "D:\" & Request.QueryString("f")  
        Response.Buffer = True
        Response.Clear

        Set s = Server.CreateObject("ADODB.Stream")
        s.Open
        s.Type = 1
        On Error Resume Next

        Set fso = Server.CreateObject("Scripting.FileSystemObject")
        If Not fso.FileExists(strFilename) Then
            Response.Write("<h1>Error:</h1>" & strFilename & " does not exist")
            Response.End
        End If

        Set f = fso.GetFile(strFilename)
        intFilelength = f.size

        s.LoadFromFile(strFilename)
        If err then
            Response.Write("<h1>Error: </h1>" & err.Description)
            Response.End
        End If

        Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name
        Response.AddHeader "Content-Length", intFilelength
        Response.Charset = "UTF-8"
        Response.ContentType = "application/octet-stream"

        Response.BinaryWrite s.Read
        Response.Flush

        s.Close
        Set s = Nothing
    End If
%>

[ Voor 14% gewijzigd door CumpsD op 21-12-2002 10:45 ]

Pagina: 1