Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 11:59 Der er 12 kommentarer og
1 løsning

Fejl når (Server.Mappath=Null)

Jeg har et problem med listning af filer i et directory.
Hvis der er filer i en given mappe, skal disse listes, men hvis der endnu ikke er nogen - ja, så skal der naturligvis intet vises (evt. "No files uploaded yet").

Jeg har forsøgt mig med nedenstående men uden held:

If IsNull(Server.MapPath("/upload/files/records/"&request.querystring("id")&"/")) then
Response.Write "No files uploaded yet"
Else
    Function ShowFolderList()
        folderspec = Server.MapPath("/upload/files/records/"&request.querystring("id")&"/")
        Set fso = Server.CreateObject("Scripting.FileSystemObject")
        Set folder = fso.GetFolder(folderspec)
        Set foldercollection = folder.Files
        For Each file in foldercollection
   
        tmp = tmp & "<a href='/upload/files/records/"& request.querystring("id")& "/" & file.name & "' target='_blank'>" & file.name & "</A><BR>"
        Next
        ShowFolderList = tmp
    End Function
    response.write showfolderlist()
End If

Jeg tror at det er min If-sætning, der er bøvl med
Mvh
/U.K.
Avatar billede Spotgun Seniormester
17. november 2003 - 12:08 #1
Jeg ville fjerne din if-sætning og ligge det ind i din function i stedet for. Prøv noget ala det her (har ikke testet det):

Function ShowFolderList()
  folderspec = Server.MapPath("/upload/files/records/"&request.querystring("id")&"/")
  Set fso = Server.CreateObject("Scripting.FileSystemObject")
  If fso.FolderExists(folderspec) Then
    Set folder = fso.GetFolder(folderspec)
    Set foldercollection = folder.Files
    If foldercollection.count > 0 Then
      For Each file in foldercollection
        tmp = tmp & "<a href='/upload/files/records/"& request.querystring("id")& "/" & file.name & "' target='_blank'>" & file.name & "</A><BR>"
      Next
      ShowFolderList = tmp
    else
      showfolderlist = "No files uploaded yet"
    end if
  else
    showfolderlist = "Folder doesn't exist"
  end if
End Function
Avatar billede Spotgun Seniormester
17. november 2003 - 12:09 #2
...husk forresten at lukke for dit FSO-object igen, efter endt brug...
Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 12:57 #3
Helt fantastisk ... Det var præcis det, der skulle til...

Kan du forklare mig hvorledes man angiver rettigheder til at oprette mapper på serveren? Jeg får tilsyneladende en fejl, når mappen ikke eksisterer i forvejen.

Dim intFileUpload, strContentType, strFilename, intFileTotalBytes

intFileUpload = FileUpload("/upload/files/records/"& request.querystring("id") &"/", 20000, Array("", "", ""), Array("", ""), strContentType, strFilename, intFileTotalBytes)
'Den sidste del af stien er dynamisk - afhængig af ID, men der opstår fejl når mappen ikke er oprettet i forvejen.
Avatar billede Spotgun Seniormester
17. november 2003 - 13:56 #4
check med FSO'en om mappen eksisterer - hvis ikke, så opret den inden du begynder upload'en.

Rettighedsmæssigt, så er det brugeren IUSR_servernavn der skal ha' skriverettigheder til din upload-mappe og alt under den.
Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 14:01 #5
Tak for hjælpen so far...

Har du mod på at hjælpe mig med oprettelse af mappen?
Mappenavnet skal være: "/upload/files/records/"& request.querystring("id") &"/"
Avatar billede Spotgun Seniormester
17. november 2003 - 14:07 #6
Prøv noget ala det her:

If FSO.FolderExists(Server.MapPath("/upload/files/records/"& request.querystring("id")) = False Then
  FSO.CreateFolder(Server.MapPath("/upload/files/records/"& request.querystring("id"))
End If
' start så din upload
Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 14:19 #7
FSO undefined?
Avatar billede Spotgun Seniormester
17. november 2003 - 14:22 #8
Ja, du skal selvfølgelig huske at ha' oprettet dit FSO object først, sorry :)

Set FSO = Server.CreateObject("Scripting.FileSystemObject")

.... sæt det ind før if-sætningen, så skulle det gerne virke...

Og for god ordens skyld, så skriv følgende når du er færdig med at bruge FSO'en.

Set FSO = Nothing
Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 14:27 #9
Får stadig:
Microsoft VBScript runtime error '800a01f4'
Variable is undefined: 'FSO'
- i den linie hvor jeg har indsat : Set FSO = Server.CreateObject("Scripting.FileSystemObject")

Troede ellers lige at den var der ;o)
Avatar billede Spotgun Seniormester
17. november 2003 - 14:38 #10
Nu ved jeg ikke hvordan hele dit script ser ud, men hvis du har "Option Explicit" i starten af det, så skal du nok også ha' en:

Dim FSO as Object

inden du kører "Set FSO..."
Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 14:43 #11
Damn you smart guy! ;o)
Det virker bare perfekt... Jeg skulle godt nok fjerne "as Object" men det funker nu!

Det går godt nok ret langsomt med at uploade!?! Det gør det ikke når jeg uploader via FTP.. Det er lidt sært..

Men tusind tak for din hjælp... Jeg tror at jeg skal læse lidt om FSO snart..

Mvh,
/U.K.
Avatar billede Spotgun Seniormester
17. november 2003 - 15:04 #12
No problem. Du kan kigge nærmere på FSO'et her:

http://msdn.microsoft.com/library/en-us/script56/html/FSOoriFileSystemObject.asp

Og ja, upload via web er ikke altid lige effektivt, men det virker da...
Avatar billede ugotabe_kidding Nybegynder
17. november 2003 - 15:06 #13
Tak for din hjælp og tid - vil straks kaste mig over den spændende læsning..

/U.K.
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