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

Masse upload?

Har et script til at uploade med... men hvordan gør jeg så jeg kan uploade flere på en gang?? Den gider godt med en, men når der kommer flere er der problemmer!
Mit script ser således ud og er fundet herinde et eller andet sted :)

<%    @EnableSessionState    = False %>
<%    Option Explicit %>
<%    Response.Expires    = 0 %>
<%
    Dim UPLOAD_PATH
        UPLOAD_PATH    = Server.MapPath("../")

    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("<html><body bgcolor=silver><center>Filen er uploaded korrekt!</center></body></html>") 'denne linie skal ændres hvis det skal ændres... Eller der skal mere til..
response.end
        Response.Redirect Request.ServerVariables("SCRIPT_NAME")

    End If

    Response.Write "<html><body bgcolor=silver><center>"
    Response.Write "<form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400><br>"
    Response.Write "<input type=""submit"" value=""Upload""></form>"
    Response.Write "</center></body></html>"

%>
<%
    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))
    End Function
%>
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 10:05 #1
Hvis det er svært at lave kan jeg da godt hæve points... (:
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 11:06 #2
Jeg gætter - nåske skal du give dine <inut type="file" ...> forskellige navne?
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:24 #3
2 sek... prøver lige
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:26 #4
nope, der kommer bare den her fejl: Denne nøgle er allerede associeret med et element i denne samling - gjorde som du sagde med at lave en name= til vær... den første file1, file2 etc
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 11:27 #5
Det var da pænt af dig endelig at fortælle os hvad maskinen skriver af fejl ;)
Må vi se din nuværende kode?
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:36 #6
self.

<%    @EnableSessionState    = False %>
<%    Option Explicit %>
<%    Response.Expires    = 0 %>
<%
    Dim UPLOAD_PATH
        UPLOAD_PATH    = Server.MapPath("../")

    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("<html><body bgcolor=silver><center>Filen er uploaded korrekt!</center></body></html>") 'denne linie skal ændres hvis det skal ændres... Eller der skal mere til..
response.end
        Response.Redirect Request.ServerVariables("SCRIPT_NAME")

    End If

    Response.Write "<html><body bgcolor=silver><center>"
    Response.Write "<form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file1><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file2><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file3><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file4><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file5><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file6><br>"
    Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file7><br><br>"
    Response.Write "<input type=""submit"" value=""Upload"" style=width:100></form>"
    Response.Write "</center></body></html>"

%>
<%
    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))
    End Function
%>
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 11:41 #7
Prøv lige at kigge på

Response.Write "<input type=""file"" name=""upload"" style=width:400 name=file1><br>"

og fortæl mig om du ikke kan se et lille problem ;)
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:43 #8
næ... ikke andet end dem der dobbel "" - men de var der da jeg tog koden, og virker med kun et input felt... så regner da ikke med det skulle være noget problem... efter som de også starter dem igen, så hvad de står der for er der jo ingen grund til :)
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 11:47 #9
så får du det hint, at det måske ikke er så hensigtsmæssigt at have det
samme attributnavn stående 2 steder ;)
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:50 #10
DOV! Sorry... 2sek... retter det lige og tjekker (:
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:52 #11
den skriver bare siden kan ikke vises nu... men kan det ikke have noget med det her kodestykke at gøre?

        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
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 11:54 #12
Hvad har du rettet det til?
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:54 #13
kan man ikke lave en for som forøger file med en vær gang så den slutter op 7? I den her linie: g_oUpload("file" & etellerandet & ") eller?
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:59 #14
jeg har ikke rettet det til noget... ved faktertalt ikke hvordan man gør... :(
Avatar billede m0nk3y Nybegynder
10. januar 2004 - 11:59 #15
eller jo, har rettet det der med name... nu ser koden sådan her ud:

<%    @EnableSessionState    = False %>
<%    Option Explicit %>
<%    Response.Expires    = 0 %>
<%
    Dim UPLOAD_PATH
        UPLOAD_PATH    = Server.MapPath("../")

    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("file1").Item("content")
        Set g_oFile    = g_oFso.CreateTextFile(UPLOAD_PATH & "\" & extract_filename(g_oUpload("file1").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("<html><body bgcolor=silver><center>Filen er uploaded korrekt!</center></body></html>") 'denne linie skal ændres hvis det skal ændres... Eller der skal mere til..
response.end
        Response.Redirect Request.ServerVariables("SCRIPT_NAME")

    End If

    Response.Write "<html><body bgcolor=silver><center>"
    Response.Write "<form name=frmUpload method=post enctype=multipart/form-data action=" & Request.ServerVariables("SCRIPT_NAME") & ">"
    Response.Write "<input type=file style=width:400 name=file1><br>"
    Response.Write "<input type=file style=width:400 name=file2><br>"
    Response.Write "<input type=file style=width:400 name=file3><br>"
    Response.Write "<input type=file style=width:400 name=file4><br>"
    Response.Write "<input type=file style=width:400 name=file5><br>"
    Response.Write "<input type=file style=width:400 name=file6><br>"
    Response.Write "<input type=file style=width:400 name=file7><br><br>"
    Response.Write "<input type=submit value=Upload style=width:100></form>"
    Response.Write "</center></body></html>"

%>
<%
    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))
    End Function
%>
Avatar billede m0nk3y Nybegynder
18. januar 2004 - 10:51 #16
Lukker
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