Avatar billede m0nk3y Nybegynder
10. januar 2004 - 00:09 Der er 6 kommentarer og
1 løsning

Se/Slet/Upload system

En kammerat ville låne lidt plads på mit webhotel. Da jeg ikke ville give ham hele ftp adgangen tænkte jeg at man nok kunne lave et script som der kunne uploade filer til mapper, slette og se mapper/filer.
Men skal filerne ligge i en bestemt mappe for at de skal kunne fuld redigeres på den måde eller kan man lægge dem et hvilken som helst sted? Har webhotellet hos www.b-one.net og de kører med Chili ASP og MySQL.
Mit system ser således ud: www.webonnet.dk/simon/admin - det er langtfra færdigt endnu, men der sneg sig lige et par fejl ind. Testede scriptet på min egen IIS server, men der kunne den heller ikke slette. Når jeg ikke havde if og else sætninger skrev den bare Tílladelse nægtet.
Mit script ser således ud (det meste):

<% Elseif page = "delete-file" Then %><%

dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

if fs.FileExists(Request.Querystring("name")) then

  fs.DeleteFile(Request.Querystring("name"))

Response.Write "Filen er slettet!"
else

Response.Write "Filen kunne ikke slettes!"

end if

set fs = nothing

%><% Else %>
<html><head><title></title></head>
<body bgcolor=silver>
<%
pPath = Server.MapPath("../")

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

Set myFolder = fs.GetFolder( pPath )
%>
<TABLE WIDTH="100%" BORDER="1" BGCOLOR="#FFFFFF" BORDERCOLOR="#000000">
<tr><td WIDTH="30%"><b><FONT>Fil Navn:</FONT></b><td WIDTH="30%"><b><FONT>File Type:</FONT></b><td WIDTH="30%"><b><FONT>File Size:</FONT></b><td WIDTH="10%"><b><FONT>Delete:</FONT></b></tr>
<% For Each thing in myFolder.Files %>
<tr><td WIDTH="30%">&nbsp;<%=thing.Name%></td><td WIDTH="30%">&nbsp;<%=thing.Type %><td WIDTH="30%">&nbsp;<%=thing.Size %> bytes<td WIDTH="10%" align="center"><a href="default.asp?page=delete-file&name=<%=thing.Name%>">- OK -</a></tr>
<% Next %>
</table>
<BR>
<%
Dim strPath
Dim objFSO
Dim objFolder
Dim objItem

strPath = "../"

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

Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
%>
<TABLE WIDTH="100%" BORDER="1" BGCOLOR="#FFFFFF" BORDERCOLOR="#000000">
<TR><TD WIDTH="30%"><FONT><B>Mappe navn:</B></FONT><TD WIDTH="30%"><FONT><B>File Type:</B></FONT><TD WIDTH="30%"><FONT><B>File Size:</B></FONT><td WIDTH="10%"><b><FONT>Delete:</FONT></b></TR>
<%
For Each objItem In objFolder.SubFolders
    If InStr(1, objItem, "_vti", 1) = 0 Then
    %>
    <TR><TD WIDTH="30%">&nbsp;<%= objItem.Name %><TD WIDTH="30%">&nbsp;<%= objItem.Type %><TD WIDTH="30%">&nbsp;<%= objItem.Size %> bytes<td WIDTH="10%" align="center"><a href="default.asp?page=delete-map&name=<%=objItem.Name%>">- OK -</a></TR>
    <%
    End If
Next
For Each objItem In objFolder.Files
%><%
Next 'objItem

Set objItem = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%></TABLE></body></html>
<% End if %>

Hvad er fejlen? Skal jeg måske sætte redighedder til et eller andet ISWUR user eller hvad den nu hed? Ved ikke lige hvor man satte det til, da jeg lige har formateret... :(
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 00:11 #1
Btw har jeg prøvet med

if fs.FileExists("../" & Request.Querystring("name") & "") then

  fs.DeleteFile(("../" & Request.Querystring("name") & "")

da det var den mappe der hed simon jeg skulle redigere i!
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 00:15 #2
nah! DOV... mit webhotel understøtter åbenbart ikke vbscript... men det var nu ikke lige det der var galt da jeg har tjekket den på min egen IIS hele tiden... find den her istedet for http://tlm.lir.dk/kristian/upload%system/admin/default.asp :)
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 00:18 #3
sry, er vidst lidt træt: http://tlm.lir.dk/kristian/upload%20system/admin/defualt.asp - smutter iseng nu.. kommer igen imorgen! =)

håber den url virker... lader lige computeren stå inat så i kan se op det >8]~~
Avatar billede eagleeye Praktikant
10. januar 2004 - 00:34 #4
Hvis den kan finde filen og forsøger at slette den kan du prøve at rette:

fs.DeleteFile(("../" & Request.Querystring("name") & "")

Til dette med ,true så skulle den slette filen hvis den er read-only:

fs.DeleteFile(("../" & Request.Querystring("name"), true)

Hvis ikke det virker er det nok rettighederne til den folder filerne ligger du skal havde rettet på. Det skal være for brugeres IUSR_computername. Den bruger skal havde slette ret i folderen.
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 07:00 #5
Hvor er det man retter så man kan gå ind og rette rettighedder?
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 07:57 #6
sådan... har givet fuld adgang til IUSR på den mappe... men det virker stadig ikke, den gør vidst nærmest som om filen ikke findes?
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 08:21 #7
Fandt ud af det.. jeg skulle bruge server.mappath istedet for... men ellers tak for hjælpen!
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