Avatar billede oleskrogh Nybegynder
28. februar 2004 - 11:59 Der er 14 kommentarer

Slette flere filer af gangen

Jeg har lavet følgende side der sletter en valgt billedfil på serveren. Imidlertid ville jeg gerne lave den således at man kunne markere flere filer af gangen og vælge "slet".
<%
if((Request.Form("Billede") <> "")) Then
dim fs
Set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile request.Form("Billede") ,True
if fs.FileExists (request.Form("Billede")) then
  fs.DeleteFile request.Form("Billede")
  response.redirect("billedoversigt.asp")
  else
  response.Write("filen blev ikke slettet")
end if
end if
set fs=nothing
%>

request.form("billede") angiver stien til ét valgt billede.

/ole
Avatar billede steen Nybegynder
29. februar 2004 - 00:10 #1
<%
if((Request.Form("Billede") <> "")) Then
    dim fs, arrForm, i
    arrForm = Split(Request.Form("Billede"),",")
    Set fs=Server.CreateObject("Scripting.FileSystemObject")

    For i = 0 To Ubound(arrForm)
        fs.CreateTextFile arrForm(i) ,True
        if fs.FileExists (arrForm(i)) then
          fs.DeleteFile arrForm(i)
          response.redirect("billedoversigt.asp")
        else
          response.Write("filen blev ikke slettet")
        end if
    Next
    set fs=nothing
end if

%>
Avatar billede oleskrogh Nybegynder
29. februar 2004 - 10:09 #2
Tak for indslaget
i linien
fs.CreateTextFile arrForm(i), True
får jeg en fejlmelding med "forkert filnavn eller nummer".
Diverse stier, navne mv virker nu rigtige nok. Hva kan det mon være?
Avatar billede steen Nybegynder
29. februar 2004 - 21:15 #3
jeg forstår ikke helt hvorfor den linie i det hele taget er der. Den opretter et billede, som du lige efter sletter! Prøv sådan her:

<%
if((Request.Form("Billede") <> "")) Then
    dim fs, arrForm, i
    arrForm = Split(Request.Form("Billede"),",")
    Set fs=Server.CreateObject("Scripting.FileSystemObject")

    For i = 0 To Ubound(arrForm)
        if fs.FileExists (arrForm(i)) then
          fs.DeleteFile arrForm(i)
          response.redirect("billedoversigt.asp")
        else
          response.Write("filen blev ikke slettet")
        end if
    Next
    set fs=nothing
end if

%>
Avatar billede oleskrogh Nybegynder
29. februar 2004 - 21:59 #4
Den nægter at slette mere end et billede af gangen!
Billederne vælges på listmenu i en form der hedder "Billede". Det skulle vel være ok. Det virker som om den split ikke fungerer efter hensigten? Jeg er desværre ikke så meget inde i ASP at jeg kan jonglere med forskellige løsninger.
Lige  nu ser koden således ud:
<%
if((Request.Form("Billede") <> "")) Then
    dim fs, arrForm, i
    arrForm = Split(Request.Form("Billede"),",")
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    For i = 0 To Ubound(arrForm)
        if fs.FileExists (arrForm(i)) then
          fs.DeleteFile arrForm(i)
        end if
    Next
    set fs=nothing
end if
response.Redirect("billedoversigt.asp")
%>
Avatar billede jcoder Nybegynder
04. marts 2004 - 09:17 #5
Hvordan ser koden ud den du sender fra ?, da din split afhænger meget af hvordan du sender dataen

/J
Avatar billede oleskrogh Nybegynder
06. marts 2004 - 16:18 #6
Koden der sendes fra ser således ud. Det er simpelthen en listeboks, hvor alle filstierne står.

<form action="deleteFile.asp" method="post" name="Billede" id="Billede">
  <p>
<select name="Billede" size="10" multiple id="Billede">
  <option>V&aelig;lg billede</option>
  <%
'Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Get the folder object associated with the directory
'Dim objFolder
Set objFolder = objFSO.GetFolder("C:/Inetpub/wwwroot/pittelitten/Database/upload_gfx/")

'Response.Write "The files found in " & objFolder.Name & ":<br>"

'Loop through the Files collection
'Dim objFile
For Each objFile in objFolder.Files
if (right((objFile.Name),4)) <> ".asp" then Response.Write "<option>"& ("C:/Inetpub/wwwroot/pittelitten/Database/upload_gfx/") & objFile.Name & "</option>"  end if
Next

'Clean up!
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
%>
</select>   
<input name="Billede" type="submit" id="Billede" value="slet">
  </p>
</form>
Avatar billede jcoder Nybegynder
07. marts 2004 - 18:15 #7
Din sletnings kode skal rettes til så den ser sådanne ud:

<%
if((Request.Form("Billede") <> "")) Then
billeder = Request.Form("Billede")
billeder = Replace(billeder," ","") 'Dette fjerner det mellemrum som kommer mellem , og billed navnet'
    dim fs, arrForm, i
    arrForm = Split(billeder,",")
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    For i = 0 To Ubound(arrForm)
        if fs.FileExists (arrForm(i)) then
          fs.DeleteFile arrForm(i)
        end if
    Next
    set fs=nothing
end if
response.Redirect("billedoversigt.asp")
%>

At lave den replace tror jeg løser dit problem :)

Mvh J
Avatar billede oleskrogh Nybegynder
07. marts 2004 - 20:05 #8
hmmm sådan umiddelbart hjælper det ikke noget. Nu blir der intet slettet!
Ole
Avatar billede jcoder Nybegynder
08. marts 2004 - 08:57 #9
Ohh det er forde:

dim fs, arrForm, i

lige skal flyttes op i toppen...

<%
if((Request.Form("Billede") <> "")) Then
dim fs, arrForm, i, billeder
billeder = Request.Form("Billede")
billeder = Replace(billeder," ","") 'Dette fjerner det mellemrum som kommer mellem , og billed navnet'
    arrForm = Split(billeder,",")
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    For i = 0 To Ubound(arrForm)
        if fs.FileExists (arrForm(i)) then
          fs.DeleteFile arrForm(i)
        end if
    Next
    set fs=nothing
end if
response.Redirect("billedoversigt.asp")
%>

Sorry det havede jeg lige glemt ;-)

Mvh J
Avatar billede oleskrogh Nybegynder
08. marts 2004 - 20:27 #10
Desværre virker det ik' 
Hvis jeg laver en response.write på slettesiden viser den filerne på en lang række med komma (uden mellemrum) imellem - der bliver ikke slettet noget!
Ole
Avatar billede jcoder Nybegynder
09. marts 2004 - 09:39 #11
<%
if ((Request.Form("Billede") <> "")) Then
dim fs, arrForm, i, billeder
billeder = Request.Form("Billede")
billeder = Replace(billeder," ","") 'Dette fjerner det mellemrum som kommer mellem , og billed navnet'
arrForm = Split(billeder,",")
If IsArray(arrForm) then
  Response.Write "Filer der skal slettes: "& ubound(arrForm) &"<br><br>"
  Set fs=Server.CreateObject("Scripting.FileSystemObject")
  For i = lbound(arrForm) To ubound(arrForm)
  Response.Write "Fil "& arrForm(i)
  If fs.FileExists (arrForm(i)) then
    Rem fs.DeleteFile arrForm(i)
    Response.Write " blev slettet."
  Else
    Response.Write " blev ikke fundet."
  End if
  Response.Write "<br>"
  Next
  set fs=nothing
Else
  Response.Write "Blev ikke lavet til et array"
End if
Else
%>
<form method='post' name='form'>
<select name='Billede' multiple size='5'><option>fil1.asp</option><option>fil1.asp</option><option>fil1.asp</option><option>fil1.asp</option></select>
<input type='submit'></form>
<%
End if
Rem response.Redirect("billedoversigt.asp")
%>

Har lige skrevet det lidt om for at få et svar på hvad der sker, men det her virker ;-)

Mvh J
Avatar billede oleskrogh Nybegynder
09. marts 2004 - 13:50 #12
Filer der skal slettes: 2
Jeg markerede 3 filer og fik følgende output, hvis det kan bruges til noget.
Stierne er korrekte!


Fil C:/Inetpub/wwwroot/pittelitten/Database/upload_gfx/eksperiment013.jpg blev ikke fundet.
Fil C:/Inetpub/wwwroot/pittelitten/Database/upload_gfx/eksperiment014.jpg blev ikke fundet.
Fil C:/Inetpub/wwwroot/pittelitten/Database/upload_gfx/eksperiment015.jpg blev ikke fundet.

/Ole
Avatar billede jcoder Nybegynder
09. marts 2004 - 14:39 #13
Nej stien er forkert da / skal være \ i filnavnet eks skal du have c:\inetpub ellers kan den ikke finde denne.

/J
Avatar billede oleskrogh Nybegynder
09. marts 2004 - 16:57 #14
Prøvede med denne nye sti, hvilket ikke hjalp. Gav følgende output:
Filer der skal slettes: 0

Fil C:\Inetpub\wwwroot\pittelitten\Database\upload_gfx\eksperiment013.jpg blev ikke fundet.

/Ole
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