Avatar billede jedimaster Nybegynder
10. april 2002 - 14:50 Der er 3 kommentarer og
1 løsning

Upload funktion på asp side??

Hej Eksperter.

Jeg er i gang med at lave noget hjemmeside halløj i frontpage 2000. På hjemmeside skriver man nogle oplysninger og man skal så kunne oploade et billede til en mappe på serveren, men hvordan??

Det skal enten være en tekst boks hvor man skriver stien

eller bedre...

En funktion hvor man klikker søg og så finder man filen via stifinderen og så finder den selv adressen.


Tak
Avatar billede teamdev Novice
10. april 2002 - 15:04 #1
følgende upload script lå på activedeveloper.dk.

Du skal selvølgelig tilrette det så det passer med stien på din server, og det er ganske enkelt, du skal blot ændre "folder til filer" til det bibliotek du vil ha skal holde filerne

Det kræver selvfølgelig at du sætter nedenstående kode ind i "HTML view"

<%    Option Explicit %>
<%    Response.Expires    = 0 %>
<%
    Dim UPLOAD_PATH


        UPLOAD_PATH    = Server.MapPath("folder til filer")

    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")
    End If

    Response.Write "<html><body><table>"
    Response.Write "<tr><td><hr></td></tr>"
    For Each g_oFile In g_oFolder.Files
        Response.Write "<tr><td><a href=""files/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>"
    Next
    Response.Write "<tr><td><hr></td></tr>"
    Response.Write "<tr><td align=""right""><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
    Response.Write "<input type=""file"" name=""upload""> &nbsp; <input type=""submit"" value=""upload""></td></tr>"
    Response.Write "</table></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
%>

NB! Jeg forventer ingen point. Da det jo ikke er min egen kode :-)
Avatar billede laurents Nybegynder
10. april 2002 - 15:04 #2
Halløj,

Det kommer lidt an på hvor du har dit site liggende - nogle hoteludbydere tilbyder komponenter (skal være installeret på webserveren) som SaFileUp eller lignende som gør arbejdet en hel del lettere for dig som udvikler.

Men - der findes en del forskellige komponenter, som alle bruger forkellig kodestykker, så det bedste vil nok i første omgang være, at checke om din server har slige installeret. Alternativt findes der også nogle komponentløse scripts man kan bruge til at uploade med, men det kræver stadig, at hoteludbyderen er med på ideen, da de (i al fald dem jeg kender til) kræver at den anonyme interbruger (IUSER) har skrive rettigheder til den mappe der skal ligges filer op i....

Håber, at du kunne bruge dette til noget - ellers skriv igen,
/henrik
Avatar billede jedimaster Nybegynder
10. april 2002 - 16:13 #3
Sitet ligger på min egen server, så jeg skulle mene at der er mulighed for lidt af hvert.
Avatar billede teamdev Novice
28. april 2002 - 02:41 #4
Kig på følgende det er upload uden komponent. (har ikke benyttet den selv)

http://activedeveloper.dk/download/default.asp?mode=showdownload&id=258

Det eneste der kræves er skriverettigheder til biblioteket hvor filerne skal smides.
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