Avatar billede snokey Nybegynder
27. september 2009 - 17:18 Der er 8 kommentarer og
1 løsning

ASP upload billeder

Hej.. Jeg leger i øjeblikket med at kunne uploade nogen billeder til en mappe på min server..

hvis jeg bare vælger at den skal uploade til en bestemt mappe er det intet problem. men jeg vil gerne kunne skrive i mit teksfelt hvilken mappe den skal uploade i.. hvis ikke dette kan lade sig gøre. så en rullemenu hvor den henter alle de oprettet mapper så jeg kan vælge hvilken jeg ønsker at uploade i.. og så et tekst felt hvor jeg kan oprette nye mapper..

Men jeg får en fejlkode.

Microsoft VBScript compilation  error '800a03ee'

Expected ')'

/foto/upload.asp, line 13

UPLOAD_PATH    = Server.MapPath("Request.Form("mappe")")
--------------------------------------------^




Kode:

<%    @EnableSessionState    = False %>
<%    Option Explicit %>
<%    Response.Expires    = 0 %>

<%


    If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
        Dim g_oUpload
            Set g_oUpload    = get_upload_files()
    Dim UPLOAD_PATH
        UPLOAD_PATH    = Server.MapPath("Request.Form("mappe")")

    Dim g_oFso, g_oFolder, g_oFile
        Set g_oFso    = Server.CreateObject("Scripting.FileSystemObject")
        Set g_oFolder    = g_oFso.getFolder(UPLOAD_PATH)
        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 "<tr><td></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=""text"" name=""mappe"">Mappens navn<br>"
    Response.Write "<input type=""file"" name=""upload""> &nbsp; <br><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
%>
Avatar billede softspot Forsker
27. september 2009 - 17:25 #1
Prøv med denne version i stedet:

UPLOAD_PATH = Server.MapPath(Request.Form("mappe"))
Avatar billede snokey Nybegynder
27. september 2009 - 22:14 #2
Request object error 'ASP 0207 : 80004005'

Cannot use Request.Form

/upload.asp, line 13

Cannot use Request.Form collection after calling BinaryRead.
Avatar billede softspot Forsker
27. september 2009 - 22:24 #3
Aaah ja, det er fordi du skal bruge objektet g_oUpload til at aflæse formular-felter, når du uploader filer (fordi ASP ikke understøtter fileupload ud af boksen og du derfor benytter en 3.partskomponent til dette formål).

Jeg har ikke lige luret hvilket komponent du bruger, men mon ikke du kan finde værdien via g_oUpload.Form("mappe")...
Avatar billede snokey Nybegynder
27. september 2009 - 23:38 #4
Hvordan skal den indsættes ? Der er kun de koder som du ser i mit spørgsmål.. Det nået jeg har fundet og redigeret i..
Avatar billede softspot Forsker
28. september 2009 - 08:38 #5
Såvidt jeg kan se tager den kode sig ikke af ævrige felter i formularen, men kun felter som indeholder filer (dvs. <input type="file"....>), så du kan ikke umiddelbart få fat i de felter med den kode der. Det er blot min umiddelbare vurdering.

Jeg vil da anbefale at du kigger på en komponent der kan det der (der findes typisk den slags komponenter på webserveren hos de udbydere som tilbyder ASP), f.eks. AspSmartUpload eller Persits Upload. Disse et typisk langt mere avancerede og performer bedre, fordi de er oversat til maskinkode/binære.
Avatar billede Slettet bruger
28. september 2009 - 10:17 #6
Avatar billede snokey Nybegynder
28. september 2009 - 23:04 #7
Thomasso det er net..
Avatar billede snokey Nybegynder
28. september 2009 - 23:23 #8
http://ta15.talkactive.net/poc/

jeg bruger ASP upload nu.. Det er en komponent der er installeret på serven der skal hoste.. men det eksempel de har lavet virker ikke.. Nogen der lige vil kigge forbi siden og se koden igemmen?
Avatar billede snokey Nybegynder
08. januar 2010 - 21:11 #9
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