Avatar billede Slettet bruger
29. marts 2006 - 14:46 Der er 15 kommentarer og
1 løsning

Slet flere filer af gangen

Hej
Jeg har en kode der ser sådan ud, og den virker fint, men mit spørgsmål er  - med denne kode sletter man en fil af gangen, kan man lave det således at man markerer flere filer af gangen og sletter dem alle på en gang ?
<%
vPath = "filer/XX"
pPath = Server.MapPath( vPath )

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

Set myFolder = fs.GetFolder( pPath )
if Request.QueryString("slet") <> "" then
fs.DeleteFile(Server.Mappath(Request.QueryString("slet")))
end if
%>
<html>

<head>
<title>Test slet</title>
</head>

<body>

<table BORDER="1" bgcolor="#E6E6E6" cellspacing="0" cellpadding="10" bordercolor="#FFFFFF"
width="560">
  <tr>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" colspan="4" width="538"><strong><br>
    Klik på linket under navn for at åbne&nbsp; filen.</strong></td>
  </tr>
  <tr>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="133"><b>Dato:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="194"><b>Navn:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="66"><b>Størrelse:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="41"><b>Slet filen </b></td>
  </tr>
<% For Each thing in myFolder.Files %>
  <tr>
    <td WIDTH="133">&nbsp;<%=thing.DateLastModified %></td>
    <td WIDTH="194">&nbsp;<a href="filer/XX/<%=thing.Name%>" target="_blank"><%=thing.Name%></a></td>
    <td WIDTH="66">&nbsp;<%=thing.Size %> </td>
    <td WIDTH="41">&nbsp;<a href="?slet=<% =vPath & "/"& thing.Name%>">Slet</a></td>
  </tr>
<% Next %>
</table>

<p><br>
<%
Dim strPath
Dim objFSO
Dim objFolder
Dim objItem

strPath = "filer/XX"

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

Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
%></p>
</body>
</html>
Avatar billede softspot Forsker
29. marts 2006 - 15:17 #1
Så skal du nok over i noget med post af en form. Noget á la dette her:

<%
vPath = "filer/XX"
pPath = Server.MapPath( vPath )

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

Set myFolder = fs.GetFolder( pPath )
filnavne = split(Request.Form("sletning"),",")
for each filnavn in filnavne
  if filnavn <> "" then
    fs.DeleteFile(Server.Mappath(filnavn))
  end if
loop
%>
<html>

<head>
<title>Test slet</title>
</head>

<body>

<form method="post">
<table BORDER="1" bgcolor="#E6E6E6" cellspacing="0" cellpadding="10" bordercolor="#FFFFFF"
width="560">
  <tr>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" colspan="4" width="538"><strong><br>
    Klik på linket under navn for at åbne&nbsp; filen.</strong></td>
  </tr>
  <tr>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="133"><b>Dato:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="194"><b>Navn:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="66"><b>Størrelse:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="41"><b>Slet filen </b></td>
  </tr>
<% For Each thing in myFolder.Files %>
  <tr>
    <td WIDTH="133">&nbsp;<%=thing.DateLastModified %></td>
    <td WIDTH="194">&nbsp;<a href="filer/XX/<%=thing.Name%>" target="_blank"><%=thing.Name%></a></td>
    <td WIDTH="66">&nbsp;<%=thing.Size %> </td>
    <td WIDTH="41">&nbsp;<input type="checkbox" value="<%=thing.Name%>" name="sletning"></td>
  </tr>
<% Next %>
</table>
<p><input type="submit" value="Slet valgte"></p>
</form>
<%
Dim strPath
Dim objFSO
Dim objFolder
Dim objItem

strPath = "filer/XX"

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

Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
%>
</body>
</html>
Avatar billede softspot Forsker
29. marts 2006 - 15:21 #2
Det kan da godt være det var en idé at starte koden med at checke om der er tale om et "postback":

<%
if ucase(Request.ServerVariables("REQUEST_METHOD")) = "POST" then
  vPath = "filer/XX"
  pPath = Server.MapPath( vPath )

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

  Set myFolder = fs.GetFolder( pPath )
  filnavne = split(Request.Form("sletning"),",")
  for each filnavn in filnavne
    if filnavn <> "" then
      fs.DeleteFile(Server.Mappath(filnavn))
    end if
  loop
end if
%>
Avatar billede Slettet bruger
30. marts 2006 - 09:22 #3
Undskyld mit sene svar, men desværre virker det ikke og jeg kan ikke se hvorfor, jeg får bare en Intern serverfejl
Avatar billede softspot Forsker
30. marts 2006 - 09:45 #4
Så skal du have fjernet en afkrydsning i dine internet indstillinger.

I IE vælger du funtioner / internet indstillinger og i den dialog avanceret-fanen. På den fane er der en liste med indstillinger og i den første sektion (Gennemse hedder den vist), skal du fjerne afkrydsningen ud for den linie hvor der står noget med "Vis venlige HTTP fejlbeskeder"...

Dette burde vise dig mere detaljerede oplysninger om de fejl der opstår på serveren.
Avatar billede Slettet bruger
30. marts 2006 - 10:21 #5
Den er slået til, men jeg får stadig kun den samme fejl, virker det hos dig ?
Avatar billede softspot Forsker
30. marts 2006 - 10:22 #6
Den skal slås fra :)
Avatar billede Slettet bruger
30. marts 2006 - 10:25 #7
Ja, selvfølgelig, jeg får denne fejl nu.
Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

testslet2.asp, line 14

loop
^
Avatar billede softspot Forsker
30. marts 2006 - 10:31 #8
OK, det er i den første kodestump at den sidste linie med loop skal ændres til next:

<%
vPath = "filer/XX"
pPath = Server.MapPath( vPath )

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

Set myFolder = fs.GetFolder( pPath )
filnavne = split(Request.Form("sletning"),",")
for each filnavn in filnavne
  if filnavn <> "" then
    fs.DeleteFile(Server.Mappath(filnavn))
  end if
next
%>
Avatar billede Slettet bruger
30. marts 2006 - 10:39 #9
Nu får jeg denne fejl, når jeg vælger et par filer der skal slettes:
Microsoft VBScript runtime error '800a0035'

File not found

testslet2.asp, line 11

og linie 11 er denne:
fs.DeleteFile(Server.Mappath(filnavn))
Avatar billede softspot Forsker
30. marts 2006 - 10:54 #10
Prøv lige denne kode i stedet for:

<%
vPath = "filer/XX/"
pPath = Server.MapPath( vPath )

Set fs = Server.CreateObject( "Scripting.FileSystemObject" )
Set myFolder = fs.GetFolder( pPath )

if ucase(Request.ServerVariables("REQUEST_METHOD")) = "POST" then
  filnavne = split(Request.Form("sletning"),",")
  for each filnavn in filnavne
    if filnavn <> "" then
      fs.DeleteFile(Server.Mappath(vPath & filnavn))
    end if
  next
end if
%>
<html>

<head>
<title>Test slet</title>
</head>

<body>

<form method="post">
<table BORDER="1" bgcolor="#E6E6E6" cellspacing="0" cellpadding="10" bordercolor="#FFFFFF"
width="560">
  <tr>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" colspan="4" width="538"><strong><br>
    Klik på linket under navn for at åbne&nbsp; filen.</strong></td>
  </tr>
  <tr>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="133"><b>Dato:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="194"><b>Navn:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="66"><b>Størrelse:</b></td>
    <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="41"><b>Slet filen </b></td>
  </tr>
<% For Each thing in myFolder.Files %>
  <tr>
    <td WIDTH="133">&nbsp;<%=thing.DateLastModified %></td>
    <td WIDTH="194">&nbsp;<a href="<%=vPath & thing.Name%>" target="_blank"><%=thing.Name%></a></td>
    <td WIDTH="66">&nbsp;<%=thing.Size %> </td>
    <td WIDTH="41">&nbsp;<input type="checkbox" value="<%=thing.Name%>" name="sletning"></td>
  </tr>
<% Next %>
</table>
<p><input type="submit" value="Slet valgte"></p>
</form>
</body>
</html>

NB: filnavnene må i øvrigt ikke indeholde komma, da dette er separator, hvis man angiver samme navn for flere kontroller i en webform.
Avatar billede Slettet bruger
30. marts 2006 - 11:01 #11
Det virker delvist, hvis jeg klikker på knappen Slet valgte, får jeg samme fejl som før hvis jeg klikker på opdater siden sletter den filerne ?
Avatar billede Slettet bruger
30. marts 2006 - 11:05 #12
Det virker hvis jeg kun vælger en fil af gangen
Avatar billede softspot Forsker
30. marts 2006 - 11:20 #13
Sidste gang:

<%
vPath = "filer/XX/"
pPath = Server.MapPath( vPath )

Set fs = Server.CreateObject( "Scripting.FileSystemObject" )
Set myFolder = fs.GetFolder( pPath )

if ucase(Request.ServerVariables("REQUEST_METHOD")) = "POST" then
  filnavne = split(Request.Form("sletning"),",")
  for each filnavn in filnavne
    filnavn = trim(filnavn)
    if filnavn <> "" then
      sletSti = Server.Mappath(vPath & filnavn)
      fs.DeleteFile(sletSti)
    end if
  next
  ' Genopfrisk siden så F5 ikke forsøger at slette igen...
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<html>

<head>
  <title>Test slet</title>
</head>

<body>

  <form method="post">
  <table BORDER="1" bgcolor="#E6E6E6" cellspacing="0" cellpadding="10" bordercolor="#FFFFFF"
  width="560">
    <tr>
      <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" colspan="4" width="538"><strong><br>
      Klik på linket under navn for at åbne&nbsp; filen.</strong></td>
    </tr>
    <tr>
      <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="133"><b>Dato:</b></td>
      <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="194"><b>Navn:</b></td>
      <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="66"><b>Størrelse:</b></td>
      <td bgcolor="#AFB9CA" bordercolor="#FFFFFF" width="41"><b>Slet filen </b></td>
    </tr>
  <% For Each thing in myFolder.Files %>
    <tr>
      <td WIDTH="133">&nbsp;<%=thing.DateLastModified %></td>
      <td WIDTH="194">&nbsp;<a href="<%=vPath & thing.Name%>" target="_blank"><%=thing.Name%></a></td>
      <td WIDTH="66">&nbsp;<%=thing.Size %> </td>
      <td WIDTH="41">&nbsp;<input type="checkbox" value="<%=thing.Name%>" name="sletning"></td>
    </tr>
  <% Next %>
  </table>
  <p><input type="submit" value="Slet valgte"></p>
  </form>
</body>
</html>
Avatar billede Slettet bruger
30. marts 2006 - 11:39 #14
Helt perfekt, tusind tak for hjælpen. Læg et svar så får du dine velfortjente point.
Avatar billede softspot Forsker
30. marts 2006 - 11:41 #15
Velbekomme :)
Avatar billede softspot Forsker
30. marts 2006 - 11:48 #16
Tak for point :)
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