Avatar billede angelenglen Nybegynder
17. februar 2007 - 12:07 Der er 6 kommentarer og
1 løsning

Vis ledig diskplads på serveren.

Jeg har brug for på en asp hjemmeside at kunne vise hvor meget ledig diskplads der er på serveren (så man eksempelvis ikke forsøger at uploade et 50mb billede hvis der kun er 30mb fri).

Jeg har ledt lidt omkring, men indtil videre har jeg kun kunnet finde scripts der viser hvor meget plads der er brugt i en mappe, og det er ikke helt hvad jeg har brug for...
Avatar billede erikjacobsen Ekspert
17. februar 2007 - 12:17 #1
Der er eksempler her: http://www.w3schools.com/asp/asp_ref_drive.asp
Men du får, hvis den ellers vil give dig et tal, pladsen for serveren, og ikke det webhotel, som du måtte have på serveren. Jeg ved så ikke om du kan bruge det.
Avatar billede angelenglen Nybegynder
17. februar 2007 - 12:53 #2
okay det må jeg lige prøve - det er nemlig hele serveren jeg er interesseret i, og ikke blot et enkelt webhotel.

jeg vender lige tilbage om det virker eller ej, da jeg er nødt til at smutte lidt nu.
Avatar billede angelenglen Nybegynder
17. februar 2007 - 14:10 #3
okay det virker super, jeg får alle de oplysninger jeg har brug for.
-Faktisk så vidt jeg kan se kunne man bruge "AvailableSpace" til at se hvor meget plads man har tilgængelig eksempelvis på et webhotel hvis det var det man ønskede.

Mit eneste problem lige nu er, at jeg gerne ville liste alle mine drev - og blandt de drev har jeg et eksternt USB-drev som jeg nogle gange frakobler - hvis det eksempelvis hedder Drev E: og jeg forsøger mig med følgende linie mens drevet er frakoblet..

Set FilSystem=Server.CreateObject("Scripting.FileSystemObject")
Set DriveLetter = FilSystem.GetDrive("e:")

så får jeg følgende fejl:

Der opstod en Microsoft VBScript-kørselsfejl fejl '800a0044'
Enheden er ikke tilgængelig
/test.asp, linje 47

Det er naturligvis fair nok, men jeg kunne egentligt godt tænke mig bare at skrive "Drevet er ikke tilgængeligt" istedet for at hele scriptet crasher...

jeg har forsøgt mig med følgende for kun at læse størrelse osv hvis drevet er klart:
if DriveLetter.IsReady=true then

-men det ser kun ud til at virke på eksempelvis CD-ROM drev der kan være tilsluttet men ikke klar...

Er der en måde jeg kan fange denne fejl, og blot udskrive en valgfri fejl-besked og så ellers fortsætte scriptet?
Avatar billede angelenglen Nybegynder
17. februar 2007 - 14:38 #4
Okay så lærte jeg lidt om error-handling i ASP :-)

Her er mit foreløbigt endelige script:




<html>
  <head><title>Drev-information</title></head>
<body>
<%
Function FormatMem(ByVal bytes)
  Dim suffix
  suffix = "Bytes"
  If bytes > 1024 Then
    bytes = bytes / 1024
    suffix = "Kb"
  End If
  If bytes > 1024 Then
    bytes = bytes / 1024
    suffix = "Mb"
  End If
  If bytes > 1024 Then
    bytes = bytes / 1024
    suffix = "Gb"
  End If
  If bytes > 1024 Then
    bytes = bytes / 1024
    suffix = "Tb"
  End If
  FormatMem = FormatNumber(bytes,2,,,True) & " " & suffix
End Function


ShowDriveInfo "c:"
ShowDriveInfo "d:"
ShowDriveInfo "e:"
ShowDriveInfo "f:"
ShowDriveInfo "g:"
ShowDriveInfo "h:"
ShowDriveInfo "i:"
ShowDriveInfo "j:"

Function ShowDriveInfo(strDriveLetter)
    on error resume next
    Dim FilSystem, DriveLetter
    Set FilSystem=Server.CreateObject("Scripting.FileSystemObject")
    Set DriveLetter = FilSystem.GetDrive(strDriveLetter)
    If Err.Number <> 0 then
        HandleError Err.Description,strDriveLetter
        Error.Clear
    else
        if DriveLetter.IsReady=true then    'Hvis drevet er klar, så vis oplysninger om drevet:
            response.write("<b>Oplysninger om drev " & DriveLetter & "</b><br>")
            response.write("Fri plads: " & FormatMem(DriveLetter.FreeSpace) & " af " & FormatMem(DriveLetter.TotalSize) & ".<br>")
            Response.write("<i>Drev " & DriveLetter & " er klar til brug.</i>")
        else    'Ellers fortæl at drevet ikke er klar...
            Response.write("Drev " & DriveLetter & " er ikke klar...")
        end if
        response.write("<hr>") 'spacer
    End If
    Set DriveLetter=nothing
    Set FilSystem=nothing
End Function



Function HandleError(strDescription, strDriveLetter)
    response.write("Fejl vedr. behandling af drev " & strDriveLetter & " - "& strDescription & "<hr>")
End Function
%>
</body>
</html>



Ved mig giver det følgende output:

Oplysninger om drev C:
Fri plads: 11,56 Gb af 20,00 Gb.
Drev C: er klar til brug.

Oplysninger om drev D:
Fri plads: 165,50 Gb af 281,71 Gb.
Drev D: er klar til brug.

Fejl vedr. behandling af drev e: - Enheden er ikke tilgængelig

Oplysninger om drev F:
Fri plads: 71,95 Gb af 114,49 Gb.
Drev F: er klar til brug.

Fejl vedr. behandling af drev g: - Enheden er ikke tilgængelig

Fejl vedr. behandling af drev h: - Enheden er ikke tilgængelig

Fejl vedr. behandling af drev i: - Enheden er ikke tilgængelig

Oplysninger om drev J:
Fri plads: 76,69 Gb af 465,75 Gb.
Drev J: er klar til brug.
Avatar billede angelenglen Nybegynder
17. februar 2007 - 14:40 #5
forresten erikjacobsen - jeg mener at kunne huske at du ikke vil have points for din hjælp, men du skal ihvertfald have muligheden - så smid et svar hvis du vil have points...

Jeg takker ihvertfald mange gange for din hjælp!
Avatar billede erikjacobsen Ekspert
17. februar 2007 - 14:56 #6
Nej, jeg samler ikke på point. Og du har jo lavet det meste arbejde ;)
Avatar billede angelenglen Nybegynder
17. februar 2007 - 15:01 #7
Okay mente nok det var dig uden points :-)
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