Avatar billede jss Nybegynder
31. oktober 2002 - 15:28 Der er 1 løsning

Dynamisk sti i upload-script

Jeg er i gang med et slags opgave-arkiv, som består af 2 dele; en database med informationer om den enkelte opgave samt en række mapper pr. opgave indeholdende filer til hver enkelt opgave. Databasen indeholder tekst-feltet ’bibliotek’ som indeholder navnet på opgavens mappe og er nøglen til kobling mellem poster i db og de fysiske fil-mapper.
Informationer om den enkelte opgave hentes fra databasen afhængig af værdien id fra URL og vises i opgaver.asp. I opgaver.asp vises også en liste med filer fra den tilhørende mappe vha. fso og GetFolder.
Der er også i opgaver.asp et link til upload.asp, som er et simpelt (uden komponent) men hurtigt script hvor der kan uploades filer til en mappe. Det jeg ikke kan få til at virke er at gøre upload-stien dynamisk, altså baseret på værdien id fra URL og den deraf følgende variabel ”path” (dannet med BuildPath), for dermed at sikre at upload sker til den rette mappe ifht. opgave. Jeg kan kun få det til at virke, hvis jeg skriver en ”absolut” sti – f.eks. ("../opgaver/Interne opgaver") som i upload.asp nedenfor.

Kan jeg gøre upload-stien dynamisk ?


En anden ting der driller mig, er mapper navngivet med flere ord adskilt med mellemrum -
f.eks. mappen ”Interne opgaver”. I opgaver.asp laver jeg et link til den aktuelle mappe vha. variablen ’path’, men selvom stien (variablen strLink) udskrives korrekt med Response.Write, så peger linket ikke rigtig hvis det drejer sig om mapper navngivet med flere ord adskilt med mellemrum – f.eks. vil førnævnte mappe pege på  D:\wwwroot\opgaver\Interne og ikke D:\wwwroot\opgaver\Interne opgaver.

Hvad skyldes det og hvad er løsningen ?

Det jeg bruger linket til, er at åbne mappen i Explorer, for derved at kunne slette og omdøbe filer. Er det muligt at bruge Metoderne (f.eks. DeleteFile, CopyFile, MoveFile osv.) i FSO i stedet ?

Glæder mig til at høre fra jer ;)


UDPLUK AF SCRIPTS:

/Opgaver.asp/
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/db.mdb")
Conn.Open DSN

' Hent fra databasen afhængig af værdien id fra URL
strSQL = "Select * From Opgaver Where Id = " & Request.Querystring("id")
Set rs = Conn.Execute(strSQL)

' Laver dynamisk sti udfra feltet /bibliotek/ i database
dim fs,path
set fs=Server.CreateObject("Scripting.FileSystemObject")
path=fs.BuildPath("..\opgaver\",rs("bibliotek"))
strLink = "<A HREF= "& (Server.MapPath(path)) &" target=""_blank"">"& (Server.MapPath(path)) &"</A>"
set fs=nothing

' Skriv opgavens data (her er kun ’Sti til filer:’ vist)
Response.Write "<p>Sti til filer: " & strLink & ""


Conn.Close
set fs=nothing
Set Conn = Nothing
%>

Desuden dannes en liste med filer fra den tilhørende mappe vha. fso og GetFolder. Her benyttes variablen path – det virker også med mappenavne med flere ord adskilt med mellemrum.


/Upload.asp/

<%
    Dim UPLOAD_PATH
        UPLOAD_PATH = Server.MapPath("../opgaver/Interne opgaver")

    Dim g_oFso, g_oFolder, g_oFile
        Set g_oFso    = Server.CreateObject("Scripting.FileSystemObject")
        Set g_oFolder = g_oFso.getFolder(UPLOAD_PATH)

    If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
        Dim g_oUpload
            Set g_oUpload = get_upload_files()

        Dim fpos, fcontent
            Fcontent = g_oUpload("upload").Item("content")
Set g_oFile    = g_oFso.CreateTextFile(UPLOAD_PATH & "\" &                extract_filename(g_oUpload("upload").Item("filename")))
        For fpos = 1 to LenB(fcontent)
            g_oFile.Write chr(AscB(MidB(fcontent, fpos, 1)))
        Next
        g_oFile.Close: Set g_oFile = Nothing

        Response.Redirect Request.ServerVariables("SCRIPT_NAME")
    End If
Avatar billede jss Nybegynder
11. november 2002 - 13:45 #1
Har selv fundet løsning på problemet vedr. mapper navngivet med flere ord adskilt med mellemrum - her bruges Replace-funktionen og mellemrum erstattes med "%20"
Det andet problem med dynamisk sti - tjah der har jeg løst på en mere statisk facon :-(
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
Kurser inden for grundlæggende programmering

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