01. april 2005 - 10:57Der er
19 kommentarer og 1 løsning
Slet fil funktion i upload script ?
Jeg har fundet et uploadscript her på siden som fungere perfekt. Jeg kunne dog godt bruge en funktion i scriptet som gør det muligt at slette en fil fra en mappe på serveren. Her er koden:
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.write("Filen er uploadet korrekt") 'denne linie skal ændres hvis det skal ændres... Eller der skal mere til.. response.end Response.Redirect Request.ServerVariables("SCRIPT_NAME")
If ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then upload_object.Add name, Server.CreateObject("Scripting.Dictionary")
End If boundary_pos = InstrB(boundary_pos + LenB(boundary), request_binaries, boundary) Loop
Set get_upload_files = upload_object
End Function
Function get_byte_string(str) Dim cnt For cnt = 1 to Len(str) get_byte_string = get_byte_string & chrB(AscB(Mid(str, cnt, 1))) Next End Function
Function get_string(str) Dim cnt For cnt = 1 to LenB(str) get_string = get_string & chr(AscB(MidB(str, cnt, 1))) Next End Function
Function extract_filename(filename) extract_filename = Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1)) End Function %>
Koden lister mappeindhold og giver en uploadfunktion. Hvis man evt. kan ligge et "delete"-link ud fra hver fil som bliver listet kunne det være helt perfekt.
Man kan jo lave linket med en querystring som indeholder stien til filen Når siden loader laves så et test på denne querystring Hvis den er sat sættes et fso object til at slette filen
For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td> <td><a href=""link"">slet filen</td></tr>" Next
for så kunne det være <a href='dinside.asp?sti='"<%=UPLOAD_PATH&"\"&g_oFile.Name%>">slet filen</a> ---------- Øverst i dinside.asp kunne du så skrive if request.querystring("sti") <> "" then Set sletFSO = CreateObject("Scripting.FileSystemObject") sletFSO.DeleteFile(Request.Querystring("sti")) end if
Jeg har lige prøvet at sætte din kode ind, men ved ikke helt hvor den skal indsættes. Du kan se den nuværende side her http://www.kooperationen.dk/uploadcirkulaere.asp stien til mappen er ../www/cirkulaere
prøv rette: ---------- For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next ---------- til ---------- For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href='uploadcirkulaere.asp?sti='"<%=UPLOAD_PATH&"\"&g_oFile.Name%>">X</a></td><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next ------------------------------ øverst i filen oven over "Dim UPLOAD_PATH" skriver du så Response.Write (Request.Querystring("sti"))
Det burde lave et kryds foran alle linksne. Når du klikker på krydset bør den refreshe siden og øverst skrive den sti som du ønsker slettet Når vi ser om det virker så laver vi lige det som sletter filen :op)
måske er det dumt at røbe sin sti i browseren..så måske er det bedre du skriver: -------------------------- For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href='uploadcirkulaere.asp?sletFil='"<%=g_oFile.Name%>">X</a></td><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next ----------------------- og så i stedet øverst oppe under "Dim UPLOAD_PATH" skriver Response.Write(UPLOAD_PATH&"\"&Request.Querystring("sletFil"))
ok er ikke sikker på jeg er her hele dagen men ideen er at du får et kryds foran alle filnavnene. Når det er på plads så indsætter du øverst i din kode følgende: ----------------- if request.querystring("sletFil") <> "" then Set sletFSO = CreateObject("Scripting.FileSystemObject") sletFSO.DeleteFile(UPLOAD_PATH&"\"&Request.Querystring("sletFil")) end if ----------------- Det bør slette filen uden varsel Det eneste jeg er i tvivl om det er om du skal bruge "\" eller "/" ...derfor jeg tænkte en udskrift var på sin plads :o)
Hej igen. sorry med ventetiden. "frokost" :) Jeg forsøger med dette. ummidelbart kan jeg ikke sætte For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href='uploadcirkulaere.asp?sletFil='"<%=g_oFile.Name%>">X</a></td><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next ind i koden.. der er vist en syntax fejl.
Jeg kan rode lidt med dine koder og evt. vende tilbage på mandag hvis det er ok med dig. Men mange tak for dit hurtige svar.
tror jeg satte en ' forkert ---------------------- For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href='uploadcirkulaere.asp?sletFil="<%=g_oFile.Name%>"'>X</a></td><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next
argh ok my bad :o) sådan her For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href='uploadcirkulaere.asp?sletFil="&g_oFile.Name&"'>X</a></td><td><a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next
ok rolig det kommer det kommer :o) Det er jo rent tabel jonglering ;o) Det skyldes jo at du ovenover de tre linjer og nedenunder har linjen Response.Write "<tr><td><hr></td></tr>" den skal også rettes til Response.Write "<tr><td><hr></td><td><hr></td></tr>" prøv det i første omgang for layoutes skyld :o)
måske var den rettelse 12:48:56 dum...for jeg kan godt se at så skal formen også rykkes Måske det var bedre at sætte "x´et" direkte ind foran linket fremfor i en celle for sig altså følgende : For Each g_oFile In g_oFolder.Files Response.Write "<tr><td><a href='uploadcirkulaere.asp?sletFil="&g_oFile.Name&"'>X</a> <a href=""cirkulaere/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>" Next
Dim UPLOAD_PATH UPLOAD_PATH = Server.MapPath("cirkulaere") Response.Write(UPLOAD_PATH&"\"&Request.Querystring("sletFil")) if request.querystring("sletFil") <> "" then Set sletFSO = CreateObject("Scripting.FileSystemObject") sletFSO.DeleteFile(UPLOAD_PATH&"\"&Request.Querystring("sletFil")) end if
hvor skal jeg indsætte: Response.Write "<tr><td><hr></td><td><hr></td></tr>" ?
Dim UPLOAD_PATH UPLOAD_PATH = Server.MapPath("cirkulaere") Response.Write(UPLOAD_PATH&"\"&Request.Querystring("sletFil")) if request.querystring("sletFil") <> "" then Dim sletFSO Set sletFSO = CreateObject("Scripting.FileSystemObject") sletFSO.DeleteFile(UPLOAD_PATH&"\"&Request.Querystring("sletFil")) end if
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.