Avatar billede nythjem Nybegynder
06. juli 2004 - 12:04 Der er 15 kommentarer og
2 løsninger

Slet fil fra server

Hej Alle!

Jeg undres lidt over mit script, men det siger altså, at filen ikke findes.. Hvad gør jeg mon galt her?

<% If Request.Querystring("slet") = "slet" Then %>
<%
Set fso = Server.CreateObject("Scripting.FilesystemObject")
set slet = fso.getfile(" & g_oFile.name & ")
set slet = fso.getfile(server.mappath("billeder/" & g_oFile.name & ""))
slet.delete

Set slet= Nothing
Set fso = Nothing
%>
<% End If %>
Avatar billede vbcoder Nybegynder
06. juli 2004 - 12:10 #1
prøv at udskrive slet


set slet = fso.getfile(" & g_oFile.name & ")
response.write (slet)

set slet = fso.getfile(server.mappath("billeder/" & g_oFile.name & ""))
response.write (slet)

du laver slet 2 gange efter hinanden så med mindre du har filen 2 steder er der noget der kikser
Avatar billede snowball Novice
06. juli 2004 - 12:13 #2
Burde

set slet = fso.getfile(server.mappath("billeder/" & g_oFile.name & ""))

ikke være

set slet = fso.getfile(server.mappath("billeder\" & g_oFile.name & ""))

Men prøv som sagt at skrive stien ud. Så kan du nemmere se om der er noget galt ;)
Avatar billede nythjem Nybegynder
06. juli 2004 - 12:33 #3
Hej!

Tak for hurtigt svar..

Jeg har gjort som du sagde vbcoder, men den siger "file not found".. Måske gør jeg det forkert?

<%
Set fso = Server.CreateObject("Scripting.FilesystemObject")
set slet = fso.getfile(" & g_oFile.name & ")
response.write (slet)

set slet = fso.getfile(server.mappath("billeder/" & g_oFile.name & ""))
response.write (slet)
%>
Avatar billede nythjem Nybegynder
06. juli 2004 - 12:35 #4
Hvis det overhovedet kan være til nogen hjælp har jeg postet hele scriptet her :)

<%    @EnableSessionState    = False %>

<%    Response.Expires      = 0 %>

<%    Server.ScriptTimeout  = 720 %>

<% If Request.Querystring("slet") = "slet" Then %>
<%
Set fso = Server.CreateObject("Scripting.FilesystemObject")
set slet = fso.getfile(server.mappath("billeder\" & g_oFile.name & ""))
slet.delete

Set slet= Nothing
Set fso = Nothing
%>
<% End If %>

<%
Response.Buffer = True

' Connection til database
Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../../database/afront.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

Sql = "SELECT * FROM avanceretopsaetning"
Set Record =  Con.Execute(Sql)
PictureLink = Record("maildomain")
%>

<%
    Dim ScriptX
    Dim UPLOAD_PATH
        UPLOAD_PATH    = Server.MapPath("../../billeder")

    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.Redirect Request.ServerVariables("SCRIPT_NAME") & "?upload=on"

    End If

if request.querystring("upload") = "on" then
scriptx = "alert('Upload er udført!');"
end if


    Response.Write "<html><title>UPLOAD AF FILER</title><head></head><body topmargin=""0"" leftmargin=""0"" style=""background-color:transparent;""><script> " & scriptX & " </script><table border=""0"" cellspacing=""0"" cellpadding=""0"" width=""315""><tr><td><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """> <input type=""file"" name=""upload"" style=""font-family: Verdana, Arial, Helvetica; font-size: 10 px;""> <input type=""submit"" value=""Upload"" style=""font-family: Verdana, Arial, Helvetica; font-size: 10 px;""></form></td><tr>"
    Response.Write "<tr><td><img src=""../gfx/1x1.gif"" width=""5"" height=""60""></td><tr><tr><td><form name=""myform"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """><input type=""hidden"" name=""slet"" value=""slet""><select MULTIPLE size=""5"" style=""width:315;height:275; font-family:Verdana, Arial, Helvetica; font-size:10px"" name=""site"" onchange=""if(this.selectedIndex>0)parent.passText(this.value)""><option value=""""></option>"
    For Each g_oFile In g_oFolder.files
    Response.Write "<option value=""http://www." & PictureLink & "/billeder/" & g_oFile.name & """>" & g_oFile.name & "</option>"
    Next
    Response.Write "</select><br><br><a href=""java script:document.myform.submit();"" onClick=""return window.confirm('Er du sikker på du vil slette denne post?');""><img src=""/admin/gfx/deletefso.gif"" border=""0""></a></td><tr></table></body></html>"

%>

<%
Con.Close
Set Con = Nothing
%>

<%
    Function get_upload_files()
        Dim    upload_object, request_binaries
        Dim position_start, position_end
        Dim boundary, boundary_pos

        Set upload_object    = Server.CreateObject("Scripting.Dictionary")
        request_binaries    = Request.BinaryRead(Request.TotalBytes)
        position_start        = 1
        position_end        = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
        boundary            = MidB(request_binaries, position_start, (position_end - position_start))
        boundary_pos        = InstrB(1, request_binaries, boundary)

        Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
            If Not(Response.IsClientConnected) Then Response.End

            Dim name, pos_file

            position_start    = (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
            position_end    = InstrB(position_start, request_binaries, get_byte_string(chr(34)))

            name            = get_string(MidB(request_binaries, position_start, (position_end - position_start)))
            pos_file        = InstrB(boundary_pos, request_binaries, get_byte_string("filename="))

            If  ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
                upload_object.Add name, Server.CreateObject("Scripting.Dictionary")

                position_start    = (pos_file + 10)
                position_end    = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
                upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

                position_start    = (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
                position_end    = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
                upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

                position_start    = (position_end + 4)
                position_end    = InstrB(position_start, request_binaries, boundary) - 2
                upload_object.item(name).Add "size", ((position_end - position_start))
                upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
            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))

FileExt = Mid(filename, InstrRev(filename, ".") + 1)

'--------------------------------------------------------------------   
'Check if the file is an JPG eller JPEG OR JPE OR GIF.
'--------------------------------------------------------------------
If LCase(FileExt) <> "jpg" AND LCase(FileExt) <> "jpeg" AND LCase(FileExt) <> "bmp" AND LCase(FileExt) <> "jpe" AND LCase(FileExt) <> "gif" Then
    error = error & "Du må kun uploade billede filer til mappen.\nBilledfiler har endelsen .JPG, .BMP, .JPEG, .JPE eller .GIF \n "
end if

'--------------------------------------------------------------------   
' If error isen`t "", has there become an error. Write it out.
'--------------------------------------------------------------------
If error <> "" Then
    Response.Clear
    %><html>
    <body onload="window.alert('Der er sket en fejl! \n\n<% =error %>');">
    <SCRIPT LANGUAGE="Javascript">setTimeout("self.close()",0000);</SCRIPT>
   
    &nbsp;</body></html><%
    Response.End
End If
    End Function
%>
Avatar billede vbcoder Nybegynder
06. juli 2004 - 12:38 #5
det var en bøf det var

response.write (server.mappath("billeder/" & g_oFile.name & ""))
Avatar billede vbcoder Nybegynder
06. juli 2004 - 12:39 #6
jeg tror din g_ofile.name er tom
Avatar billede vbcoder Nybegynder
06. juli 2004 - 12:41 #7
jeg går offline nu
Avatar billede nythjem Nybegynder
06. juli 2004 - 12:43 #8
Okay..

Hvis vi nu sagde, at min g_ofile.name er tom, så må jeg jo hente den i en querystring, men hvordan henter jeg kun filnavnet ud af denne streng?

http://www.domæne.dk/admin/popups/upload.asp?slet=slet&site=http://www.domæne.dk/billeder/pic10wx52hvxupc1296.jpg
Avatar billede snowball Novice
06. juli 2004 - 12:58 #9
Prøv dette:

Function FindLastPosInString(pInput, pFind)
Dim i, iResult

  For i = 1 To Len(pInput)
    If Mid(pInput, i, 1) = pFind Then iResult = i
  Next
  FindLastPosInString = iResult
End Function

Function ExtractFileName(pPath)
  ExtractFileName = Mid(pPath, FindLastPosInString(pPath, "/") + 1) '+1 to exclude the last /
End Function

Response.Write "<br>Filnavn: " & ExtractFileName(Request.Querystring("site"))

Vil ikke afvise at det måske kan gøres smartere ;)

Men hvad fik frem da du lavede en response.write (server.mappath("billeder/" & g_oFile.name & "")) ?
Avatar billede vbcoder Nybegynder
06. juli 2004 - 12:59 #10
Du kunne prøve med den her - den er ikke afprøvet men burde loope en given url og plukke alt fra den sidste / i url

<%
dim filename
dim site

'hent site fra querystring
site = request.querystring("site")

'kald funktionen
filename = GetFilenameFromUrl(site)

response.write (filename)

function GetFilenameFromUrl(url)

  'tæller
  dim slashPos
  'arbejdsvariabel
  dim tempUrl
  'sæt arbejdsvariabel lig med den indpasserede url
  tempUrl = url
  'loop
  do
    'find pos af første /
    slashPos = instr(tempUrl,"/")   
    if slashPos <> 0 then
      'klip strengen
      tempUrl = Mid(tempUrl, slashPos + 1)
    else
      exit do
    end if
  loop
  'retur
  GetFilenameFromUrl = tempUrl

end function

%>
Avatar billede nythjem Nybegynder
06. juli 2004 - 13:13 #11
Nu er vi jo ved, at være der :)

Jeg får bare, file not found.. Min struktur ser sådan her ud.

www/admin/popups/upload.asp
www/billeder/

Jeg har prøvet med relativ sti, men det går ikke ("/billeder") og ("\billeder")..

Nogen forslag? :)

<% If Request.Querystring("slet") = "slet" Then %>

<%
dim filename
dim site

'hent site fra querystring
site = request.querystring("site")

'kald funktionen
filename = GetFilenameFromUrl(site)

response.write (filename)

function GetFilenameFromUrl(url)

  'tæller
  dim slashPos
  'arbejdsvariabel
  dim tempUrl
  'sæt arbejdsvariabel lig med den indpasserede url
  tempUrl = url
  'loop
  do
    'find pos af første /
    slashPos = instr(tempUrl,"/")   
    if slashPos <> 0 then
      'klip strengen
      tempUrl = Mid(tempUrl, slashPos + 1)
    else
      exit do
    end if
  loop
  'retur
  GetFilenameFromUrl = tempUrl

end function
%>

<%
Set fso = Server.CreateObject("Scripting.FilesystemObject")
set slet = fso.getfile(server.mappath("billeder\" & tempUrl & ""))
slet.delete

Set slet= Nothing
Set fso = Nothing
%>
<% End If %>
Avatar billede snowball Novice
06. juli 2004 - 13:52 #12
Hvis du nu prøver at glemme den sidste del hvor du prøver at slette filen, hvad udskriver den så i response.write (filename) ?

Den skal jo gerne skrive noget i stil med D:\www\billeder\fil.jpg
Avatar billede nythjem Nybegynder
06. juli 2004 - 15:43 #13
Tak snowball, for den sidste kommentar, den fik mig til at tænke det lidt bedre igennem.

Gider I begge ligge point.. Og tusinde tak for hjælpen :)

Løsningen blev

<% If Request.Querystring("slet") = "slet" Then %>

<%
dim filename
dim site

'hent site fra querystring
site = request.querystring("site")

'kald funktionen
filename = GetFilenameFromUrl(site)

function GetFilenameFromUrl(url)

  'tæller
  dim slashPos
  'arbejdsvariabel
  dim tempUrl
  'sæt arbejdsvariabel lig med den indpasserede url
  tempUrl = url
  'loop
  do
    'find pos af første /
    slashPos = instr(tempUrl,"/")   
    if slashPos <> 0 then
      'klip strengen
      tempUrl = Mid(tempUrl, slashPos + 1)
    else
      exit do
    end if
  loop
  'retur
  GetFilenameFromUrl = tempUrl

end function

%>

<%
dim fs,f
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile(server.mappath("\billeder\" & filename & ""))
f.Delete
set f=nothing
set fs=nothing
%>

<% End If %>
Avatar billede snowball Novice
06. juli 2004 - 15:50 #14
:)
Avatar billede vbcoder Nybegynder
07. juli 2004 - 07:58 #15
;o)
Avatar billede snowball Novice
07. juli 2004 - 08:43 #16
vbcoder: Du skal lave et svar hvis du skal have nogen point ;)
Avatar billede vbcoder Nybegynder
07. juli 2004 - 09:35 #17
nåja
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