Avatar billede remo27 Nybegynder
28. maj 2007 - 19:34 Der er 14 kommentarer og
1 løsning

file upload uden komponet

har dette script som uploader til en mappe, nu kunne jeg godt tænke mig at koble et par form felter så man samtidigt kan skrive til en db, jeg har gjodt db'en klar.

Db'en hedder brugerinfo.mdb tabellen hedder download, som indeholder en id (auto num), titel(tekst), doc(tekst), emne
(tekst)

der skal være en hidden funktion som sender teksten "download" i feltet emne.

fileupload.asp

<%
'-------------------- Start: fileupload.inc --------------------

'*** FileUpload                          ***
'*** af Lars Snyder ( pila@mailme.dk)      ***
'***  http://www.tipsogtricks-online.dk    ***
'*
'* Sprog: VBScript
'*
'* Input:
'* strPath        Streng med uploadpath, f.eks. "output/", "/asp/binary/upload/" eller ""
'* intMaxSize    Tilladte grænse for filerne filer der uploades. Hvis < 1 er der ingen grænse.
'* arrAcceptType  Array med accepterede Content-Type, f.eks. "image/gif", "image/jpeg". Hvis ("") er alle filtyper accepterede.
'* arrAcceptExt  Array med sidste dele af filnavne, f.eks. "gif", "jpg" eller "kundennefil.xls". Hvis ("") er alle ext accepterede.
'*
'* Output: 0 hvis filen er uploaded korrekt.
'*        1 Request fra bruger gik galt
'*        2 Content med name="fileupload" blev ikke fundet
'*        3 Ingen filnavn
'*        4 Content-Type accepteres ikke
'*        5 Ext accepteres ikke
'*        6 Filen er for stor
'*        7 Filen blev ikke uploaded korrekt
'* strContentType    Den fundne type, f.eks. "image/gif"
'* strFilename        Det fundne filnavn, f.eks. "button.gif"
'* intFileTotalBytes  Filens samlede størrelse, f.eks. 9853
'*
'* Eksempler på ContentTypes
'* Microsoft IE4              | Netscape NN4                                      | Beskrivelse
'* "image/gif"                | "image/gif"                                        | CompuServe Graphics Interchange (.gif)
'* "image/pjpeg"              | "image/jpeg"                                      | JPEG/JFIF Compliant (.jpg | .jif | .jpeg)
'* "application/octet-stream" | "application/msexcel"                              | Microsoft Excel-regneark (.xls)
'* "application/octet-stream" | "application/msword"                              | Microsoft Word-dokument (.doc)
'* "text/html"                | "text/html"                                        | HTML Document (.htm | .html)
'* "text/plain"              | "application/x-unknown-content-type-asp_auto_file" | Active Server Page (.asp)
'* "text/plain"              | "text/plain"                                      | Tekstdokument (.txt)
'* "text/plain"              | "application/x-unknown-content-type-Excel.CSV"    | Separeret fil (.csv)
'* "application/octet-stream" | "application/octet-stream"                        | Binær fil (.bin)
'* "application/octet-stream" | "application/octet-stream"                        | Uden kendt filtype (.lol)
'* Bemærk i øvrigt, at
'* a. Der er desværre forskel på den tekst Microsoft og Netscape anvender på samme filtype.
'* b. Microsoft evaulerer ikke kun filens efternavn, men også det faktiske indhold!

Function FileUpload(strPath, intMaxSize, arrAcceptType, arrAcceptExt, ByRef strContentType, ByRef strFilename, ByRef intFileTotalBytes)
    'Variable deklaration
    Dim intPostTotalBytes, intStartPos, intEndPos, i
    Dim bstrPostData, bstrDivider
    Dim strTemp, strFileSpec
    Dim arrSplit
    Dim vbCrLfB
    Dim bolStopLoop, bolContentTypeOK, bolExtOK
    Dim fs, ts, f

    'Sæt returværdier
    strContentType = ""
    strFilename = ""
    intFileTotalBytes = 0

    'Check: Er det faktisk POST upload?
    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then

        'Dan vbCrLf som binær streng
        vbCrLfB = ChrB(13) & ChrB(10)

        'Hent den binære POST fra brugeren
        intPostTotalBytes = Request.TotalBytes 'Find antallet af bytes i POST
        bstrPostData = Request.BinaryRead(intPostTotalBytes) 'Hent POST til en binær streng
        If LenB(bstrPostData) <> intPostTotalBytes Then 'Check: Er antallet af bytes i POST forskelligt fra den binære streng?
            'Returner værdi og stop
            FileUpload = 1
            Exit Function
        End If

        'Hent delelinien inkl. vbCrLfB (altid hele første linje)
        bstrDivider = LeftB(bstrPostData, InStrB(bstrPostData, vbCrLfB) + 1)
       
        'Default StartPos
        intStartPos = 1
     
        'Find Content-Disposition hvor name="fileupload"
        bolStopLoop = False
        Do
            'Find starten af denne Content del (umiddelbart efter delelinien)
            intStartPos = InStrB(intStartPos, bstrPostData, bstrDivider) + LenB(bstrDivider)
            If intStartPos = 0 Then
                'Ikke flere Content delere - Returner værdi og stop
                FileUpload = 2
                Exit Function
            End If

            'Find slutningen af denne Content del (umiddelbart inden den næste delelinie)
            intEndPos = InStrB(intStartPos, bstrPostData, bstrDivider)
            If intEndPos = 0 Then
                'Ikke flere Content delere - Returner værdi og stop
                FileUpload = 2
                Exit Function
            End If

            'Hent denne Content-Disposition (uden vbCrLf)
            strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

            'Er fileupload feltet i denne Content-Disposition?
            If InStr(LCase(strTemp), "name=""fileupload""") > 0 Then
                'Stop løkken her
                bolStopLoop = True
            Else
                'Start igen umiddelbart efter denne Content, men før næste divider
                intStartPos = intEndPos
            End If
        Loop Until bolStopLoop

        'Flyt intStartPos til efter Content-Disposition linjen
        intStartPos = intStartPos + Len(strTemp) + 2

        'Ekstrakt POST filnavnet fra strTemp
        arrSplit = Split(strTemp, ";") 'Opdel strTemp ved ;: Content-Disposition: form-data; name="fileupload"; filename="filen.txt"

        'Find filnavnet fra filename= array
        strTemp = "" 'Værdi ved fejl
        For i = 0 To UBound(arrSplit) 'Køres for alle i denne array
            If LCase(Left(Trim(arrSplit(i)), 9)) = "filename=" Then 'Står der filename= ?
                strTemp = Trim(arrSplit(i))
                Exit For
            End If
        Next

        'Afbryd hvis der ikke blev fundet noget filnavn
        If strTemp = "" Or strTemp = "filename=""""" Then
            FileUpload = 3
            Exit Function
        End If

       
        'Find sub folder
        iStart = inStr(1,bin2str(bstrPostData),"name=""folder""")
        if iStart>0 then iSlut = inStr(iStart,bin2str(bstrPostData),"------")

        if iStart>0 or iSlut>0 then
          folder = (Mid(bin2str(bstrPostData),iStart+17,iSlut-iStart-19))
          if right(folder,1)<>"/" then folder = folder & "/"
        end if       
       
        'Find filnavnet
        arrSplit = Split(strTemp, """")        'Opdel streng ved "
        strTemp = arrSplit(UBound(arrSplit) - 1) 'Næstsidste indholder filnavn
        arrSplit = Split(strTemp, "\") 'Del ved alle \  Så indeholder den sidste filnavn.ext"
        strFilename = arrSplit(UBound(arrSplit)) 'Hent den sidste array, der må være filnavnet

        'Dan det fulde outputfilnavn via MapPath
        strFileSpec = Server.MapPath(LCase(strPath & folder & strFilename)) 'LCase kan evt fjernes herfra

        'Hent Content-Type (uden vbCrLf)
        strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

        'Flyt intStartPos til efter Content-Type linjen
        intStartPos = intStartPos + Len(strTemp) + 2
       
        'Ekstrakt POST Content-Type
        arrSplit = Split(strTemp, " ")
        strContentType = arrSplit(UBound(arrSplit))

        'Skal Content-Type checkes?
        bolContentTypeOK = False
        If arrAcceptType(LBound(arrAcceptType)) <> "" Then
            For Each strTemp In arrAcceptType
                If strContentType = strTemp Then
                    bolContentTypeOK = True
                End If
            Next

            'Check: Er det en accepteret Content-Type?
            If Not bolContentTypeOK Then
                'ContentType ikke fundet - Returner værdi og stop
                FileUpload = 4
                Exit Function
            End If
        End If

        'Skal ekstention checkes?
        bolExtOK = False
        If arrAcceptExt(LBound(arrAcceptExt)) <> "" Then
            For Each strTemp In arrAcceptExt
                If LCase(Right(strFilename, Len(strTemp))) = strTemp Then
                    bolExtOK = True
                End If
            Next

            'Check: Er det en accepteret ekstention?
            If Not bolExtOK Then
                'Ekstention ikke fundet - Returner værdi og stop
                FileUpload = 5
                Exit Function
            End If
        End If

        'Find faktiske start/slut på datafilen ved at fjerne foranstillede og efterstillede vbCrLfB
        intStartPos = intStartPos + 2
        intEndPos = intEndPos - 2
        intFileTotalBytes = intEndPos - intStartPos

        'Skal filstørrelsen checkes?
        If intMaxSize > 0 Then
            'Check: Er filen for stor?
            If intFileTotalBytes > intMaxSize Then
                'Filen er for stor - Returner værdi og stop
                FileUpload = 6
                Exit Function
            End If
        End If

        'Åbn, skriv og luk outputfilen
        Set fs = CreateObject("Scripting.FileSystemObject") 'Filsystem objekt
        Set ts = fs.CreateTextFile(strFileSpec, True) 'Åbn outputfil, overskriv evt. eksisterende
        For i = intStartPos To intEndPos - 1
            ts.Write(Chr(AscB(MidB(bstrPostData, i, 1)))) 'Skriv data eet tegn af gangen
        Next
        ts.Close 'Luk outputfil

        'Check: Blev filen oprettet og har den samme størrelse?
        Set f = fs.GetFile(strFileSpec)
        If f.Size <> intFileTotalBytes Then
                FileUpload = 7
                Exit Function
        End If

        '* Returner OK
        FileUpload = 0
    End If
End Function

'* Funktion der oversætter en bstr binær streng til en almindelig streng
'* Pas på med 00 værdier, da de fungerer som EOF i en almindelig streng
Function bin2str(bstrBinary)
    Dim i
    For i = 1 To LenB(bstrBinary)
      bin2str = bin2str & Chr(AscB(MidB(bstrBinary, i, 1)))
    Next
End Function

'-------------------- Slut: fileupload.inc --------------------
%>



uploaddoc.asp


<!-- #INCLUDE FILE="fileupload.asp" -->

<HTML>
<HEAD>
<TITLE>Upload uden komponent</TITLE>


</HEAD>
<BODY>

<%
'*************************************
'**** Test af FileUpload funktion ****
'****                            ****
'**** Upload .gif eller .jpg      ****
'**** billede til mappen /upload  ****
'*************************************

    'Skal formen vises?
    If Request.ServerVariables("REQUEST_METHOD") <> "POST" Then
%>

<FORM ENCTYPE="multipart/form-data" ACTION="admin/uploaddoc.asp" METHOD="POST">

<BR>
<INPUT NAME="fileupload" TYPE="file" size="20"><BR>
<INPUT NAME="Action" TYPE="submit" VALUE="upload doc">
</FORM>
<%
    Else
        'Dim intFileUpload, strContentType, strFilename, intFileTotalBytes

        intFileUpload = FileUpload("../doc/", 200000, Array(msword), Array("doc"), strContentType, strFilename, intFileTotalBytes)

        If intFileUpload = 0 Then
            Response.Write "Filen " & strFilename & " blev uploaded.<BR>"
            Response.Write "Det er en fil af typen " & strContentType & " og den fylder " & intFileTotalBytes & " bytes:<BR>"
           
        Else 
            Response.Write "Der opstod en fejl under upload!<BR>"
            Response.Write "Fejl nr: " & intFileUpload & "<BR>"
            Response.Write "Filnavn: " & strFilename & "<BR>"
            Response.Write "Filtype: " & strContentType & "<BR>"
            Response.Write "Filstørrelse: " & intFileTotalBytes & "<BR>"
                    End If
    End If
%>
&nbsp;</BODY></HTML>
Avatar billede w13 Novice
28. maj 2007 - 19:59 #1
Har du forsøgt og oplevet problemer, eller ved du bare ikke, hvor du skal starte?

Prøv med dette i uploaddoc.asp:
--------------------------------------------
<!-- #INCLUDE FILE="fileupload.asp" -->

<HTML>
<HEAD>
<TITLE>Upload uden komponent</TITLE>
</HEAD>
<BODY>

<%
'*************************************
'**** Test af FileUpload funktion ****
'****                            ****
'**** Upload .gif eller .jpg      ****
'**** billede til mappen /upload  ****
'*************************************

    'Skal formen vises?
    If Request.ServerVariables("REQUEST_METHOD") <> "POST" Then
%>

<FORM ENCTYPE="multipart/form-data" ACTION="admin/uploaddoc.asp" METHOD="POST">

<BR>
Titel: <INPUT NAME="titel" TYPE="text"><BR>
DOC: <INPUT NAME="doc" TYPE="text"><BR>
EMNE: <INPUT NAME="emne" TYPE="text"><BR>
<INPUT NAME="fileupload" TYPE="file" size="20"><BR>
<INPUT NAME="Action" TYPE="submit" VALUE="upload doc">
</FORM>
<%
    Else
        'Dim intFileUpload, strContentType, strFilename, intFileTotalBytes

        intFileUpload = FileUpload("../doc/", 200000, Array(msword), Array("doc"), strContentType, strFilename, intFileTotalBytes)

        If intFileUpload = 0 Then
            Response.Write "Filen " & strFilename & " blev uploaded.<BR>"
            Response.Write "Det er en fil af typen " & strContentType & " og den fylder " & intFileTotalBytes & " bytes:<BR>"
           
        Else 
            Response.Write "Der opstod en fejl under upload!<BR>"
            Response.Write "Fejl nr: " & intFileUpload & "<BR>"
            Response.Write "Filnavn: " & strFilename & "<BR>"
            Response.Write "Filtype: " & strContentType & "<BR>"
            Response.Write "Filstørrelse: " & intFileTotalBytes & "<BR>"
                    End If
    End If
%>
&nbsp;
</BODY>
</HTML>
Avatar billede remo27 Nybegynder
28. maj 2007 - 20:02 #2
w13>> Anede ikke hvor jeg skulle starte i denne kode
Avatar billede w13 Novice
28. maj 2007 - 20:04 #3
Og den anden:
---------------------------------------------------
'*** FileUpload                          ***
'*** af Lars Snyder ( pila@mailme.dk)      ***
'***  http://www.tipsogtricks-online.dk    ***
'*
'* Sprog: VBScript
'*
'* Input:
'* strPath        Streng med uploadpath, f.eks. "output/", "/asp/binary/upload/" eller ""
'* intMaxSize    Tilladte grænse for filerne filer der uploades. Hvis < 1 er der ingen grænse.
'* arrAcceptType  Array med accepterede Content-Type, f.eks. "image/gif", "image/jpeg". Hvis ("") er alle filtyper accepterede.
'* arrAcceptExt  Array med sidste dele af filnavne, f.eks. "gif", "jpg" eller "kundennefil.xls". Hvis ("") er alle ext accepterede.
'*
'* Output: 0 hvis filen er uploaded korrekt.
'*        1 Request fra bruger gik galt
'*        2 Content med name="fileupload" blev ikke fundet
'*        3 Ingen filnavn
'*        4 Content-Type accepteres ikke
'*        5 Ext accepteres ikke
'*        6 Filen er for stor
'*        7 Filen blev ikke uploaded korrekt
'* strContentType    Den fundne type, f.eks. "image/gif"
'* strFilename        Det fundne filnavn, f.eks. "button.gif"
'* intFileTotalBytes  Filens samlede størrelse, f.eks. 9853
'*
'* Eksempler på ContentTypes
'* Microsoft IE4              | Netscape NN4                                      | Beskrivelse
'* "image/gif"                | "image/gif"                                        | CompuServe Graphics Interchange (.gif)
'* "image/pjpeg"              | "image/jpeg"                                      | JPEG/JFIF Compliant (.jpg | .jif | .jpeg)
'* "application/octet-stream" | "application/msexcel"                              | Microsoft Excel-regneark (.xls)
'* "application/octet-stream" | "application/msword"                              | Microsoft Word-dokument (.doc)
'* "text/html"                | "text/html"                                        | HTML Document (.htm | .html)
'* "text/plain"              | "application/x-unknown-content-type-asp_auto_file" | Active Server Page (.asp)
'* "text/plain"              | "text/plain"                                      | Tekstdokument (.txt)
'* "text/plain"              | "application/x-unknown-content-type-Excel.CSV"    | Separeret fil (.csv)
'* "application/octet-stream" | "application/octet-stream"                        | Binær fil (.bin)
'* "application/octet-stream" | "application/octet-stream"                        | Uden kendt filtype (.lol)
'* Bemærk i øvrigt, at
'* a. Der er desværre forskel på den tekst Microsoft og Netscape anvender på samme filtype.
'* b. Microsoft evaulerer ikke kun filens efternavn, men også det faktiske indhold!

Function FileUpload(strPath, intMaxSize, arrAcceptType, arrAcceptExt, ByRef strContentType, ByRef strFilename, ByRef intFileTotalBytes)
    'Variable deklaration
    Dim intPostTotalBytes, intStartPos, intEndPos, i
    Dim bstrPostData, bstrDivider
    Dim strTemp, strFileSpec
    Dim arrSplit
    Dim vbCrLfB
    Dim bolStopLoop, bolContentTypeOK, bolExtOK
    Dim fs, ts, f

    'Sæt returværdier
    strContentType = ""
    strFilename = ""
    intFileTotalBytes = 0

    'Check: Er det faktisk POST upload?
    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then

        'Dan vbCrLf som binær streng
        vbCrLfB = ChrB(13) & ChrB(10)

        'Hent den binære POST fra brugeren
        intPostTotalBytes = Request.TotalBytes 'Find antallet af bytes i POST
        bstrPostData = Request.BinaryRead(intPostTotalBytes) 'Hent POST til en binær streng
        If LenB(bstrPostData) <> intPostTotalBytes Then 'Check: Er antallet af bytes i POST forskelligt fra den binære streng?
            'Returner værdi og stop
            FileUpload = 1
            Exit Function
        End If

        'Hent delelinien inkl. vbCrLfB (altid hele første linje)
        bstrDivider = LeftB(bstrPostData, InStrB(bstrPostData, vbCrLfB) + 1)
       
        'Default StartPos
        intStartPos = 1
     
        'Find Content-Disposition hvor name="fileupload"
        bolStopLoop = False
        Do
            'Find starten af denne Content del (umiddelbart efter delelinien)
            intStartPos = InStrB(intStartPos, bstrPostData, bstrDivider) + LenB(bstrDivider)
            If intStartPos = 0 Then
                'Ikke flere Content delere - Returner værdi og stop
                FileUpload = 2
                Exit Function
            End If

            'Find slutningen af denne Content del (umiddelbart inden den næste delelinie)
            intEndPos = InStrB(intStartPos, bstrPostData, bstrDivider)
            If intEndPos = 0 Then
                'Ikke flere Content delere - Returner værdi og stop
                FileUpload = 2
                Exit Function
            End If

            'Hent denne Content-Disposition (uden vbCrLf)
            strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

            'Er fileupload feltet i denne Content-Disposition?
            If InStr(LCase(strTemp), "name=""fileupload""") > 0 Then
                'Stop løkken her
                bolStopLoop = True
            Else
                'Start igen umiddelbart efter denne Content, men før næste divider
                intStartPos = intEndPos
            End If
        Loop Until bolStopLoop

        'Flyt intStartPos til efter Content-Disposition linjen
        intStartPos = intStartPos + Len(strTemp) + 2

        'Ekstrakt POST filnavnet fra strTemp
        arrSplit = Split(strTemp, ";") 'Opdel strTemp ved ;: Content-Disposition: form-data; name="fileupload"; filename="filen.txt"

        'Find filnavnet fra filename= array
        strTemp = "" 'Værdi ved fejl
        For i = 0 To UBound(arrSplit) 'Køres for alle i denne array
            If LCase(Left(Trim(arrSplit(i)), 9)) = "filename=" Then 'Står der filename= ?
                strTemp = Trim(arrSplit(i))
                Exit For
            End If
        Next

        'Afbryd hvis der ikke blev fundet noget filnavn
        If strTemp = "" Or strTemp = "filename=""""" Then
            FileUpload = 3
            Exit Function
        End If

       
        'Find sub folder
        iStart = inStr(1,bin2str(bstrPostData),"name=""folder""")
        if iStart>0 then iSlut = inStr(iStart,bin2str(bstrPostData),"------")

        if iStart>0 or iSlut>0 then
          folder = (Mid(bin2str(bstrPostData),iStart+17,iSlut-iStart-19))
          if right(folder,1)<>"/" then folder = folder & "/"
        end if       
       
        'Find filnavnet
        arrSplit = Split(strTemp, """")        'Opdel streng ved "
        strTemp = arrSplit(UBound(arrSplit) - 1) 'Næstsidste indholder filnavn
        arrSplit = Split(strTemp, "\") 'Del ved alle \  Så indeholder den sidste filnavn.ext"
        strFilename = arrSplit(UBound(arrSplit)) 'Hent den sidste array, der må være filnavnet

        'Dan det fulde outputfilnavn via MapPath
        strFileSpec = Server.MapPath(LCase(strPath & folder & strFilename)) 'LCase kan evt fjernes herfra

        'Hent Content-Type (uden vbCrLf)
        strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

        'Flyt intStartPos til efter Content-Type linjen
        intStartPos = intStartPos + Len(strTemp) + 2
       
        'Ekstrakt POST Content-Type
        arrSplit = Split(strTemp, " ")
        strContentType = arrSplit(UBound(arrSplit))

        'Skal Content-Type checkes?
        bolContentTypeOK = False
        If arrAcceptType(LBound(arrAcceptType)) <> "" Then
            For Each strTemp In arrAcceptType
                If strContentType = strTemp Then
                    bolContentTypeOK = True
                End If
            Next

            'Check: Er det en accepteret Content-Type?
            If Not bolContentTypeOK Then
                'ContentType ikke fundet - Returner værdi og stop
                FileUpload = 4
                Exit Function
            End If
        End If

        'Skal ekstention checkes?
        bolExtOK = False
        If arrAcceptExt(LBound(arrAcceptExt)) <> "" Then
            For Each strTemp In arrAcceptExt
                If LCase(Right(strFilename, Len(strTemp))) = strTemp Then
                    bolExtOK = True
                End If
            Next

            'Check: Er det en accepteret ekstention?
            If Not bolExtOK Then
                'Ekstention ikke fundet - Returner værdi og stop
                FileUpload = 5
                Exit Function
            End If
        End If

        'Find faktiske start/slut på datafilen ved at fjerne foranstillede og efterstillede vbCrLfB
        intStartPos = intStartPos + 2
        intEndPos = intEndPos - 2
        intFileTotalBytes = intEndPos - intStartPos

        'Skal filstørrelsen checkes?
        If intMaxSize > 0 Then
            'Check: Er filen for stor?
            If intFileTotalBytes > intMaxSize Then
                'Filen er for stor - Returner værdi og stop
                FileUpload = 6
                Exit Function
            End If
        End If

        'Åbn, skriv og luk outputfilen
        Set fs = CreateObject("Scripting.FileSystemObject") 'Filsystem objekt
        Set ts = fs.CreateTextFile(strFileSpec, True) 'Åbn outputfil, overskriv evt. eksisterende
        For i = intStartPos To intEndPos - 1
            ts.Write(Chr(AscB(MidB(bstrPostData, i, 1)))) 'Skriv data eet tegn af gangen
        Next
        ts.Close 'Luk outputfil

        'Check: Blev filen oprettet og har den samme størrelse?
        Set f = fs.GetFile(strFileSpec)
        If f.Size <> intFileTotalBytes Then
                FileUpload = 7
                Exit Function
        End If

        '* Returner OK
        FileUpload = 0
    End If
End Function

'* Funktion der oversætter en bstr binær streng til en almindelig streng
'* Pas på med 00 værdier, da de fungerer som EOF i en almindelig streng
Function bin2str(bstrBinary)
    Dim i
    For i = 1 To LenB(bstrBinary)
      bin2str = bin2str & Chr(AscB(MidB(bstrBinary, i, 1)))
    Next
End Function

Set rs = Server.CreateObject("ADODB.RecordSet")
Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("brugerinfo.mdb")
Conn.Open strDSN

strSQL = "SELECT * FROM [download]"
rs.Open strSQL, strDSN, 2, 2
rs.AddNew

rs("titel") = Replace(Request.Form("titel"),"'","&#39;")
rs("doc") = Replace(Request.Form("doc"),"'","&#39;")
rs("emne") = Replace(Request.Form("emne"),"'","&#39;")

rs.Update
rs.Close

Conn.Close
set rs = Nothing
set Close = nothing
set Conn = nothing
Avatar billede w13 Novice
28. maj 2007 - 20:05 #4
Jeg tror i øvrigt, jeg har brugt denne kode selv engang - kan faktisk ikke huske, om den gjorde vrøvl, når jeg overførte flere ting i formen..
Avatar billede remo27 Nybegynder
28. maj 2007 - 20:37 #5
jeg har problem med denne linie. fileupload.asp

strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("./db/brugerinfo.mdb")

så kan den godt vise uploaddoc.asp, men når jeg sende til db, skriver den

Fejltype:
Microsoft JET Database Engine (0x80004005)
"D:\web2007\Adpd\admin\db\brugerinfo.mdb" er ikke en gyldig sti. Kontroller, at stinavnet er stavet korrekt, og at du er tilsluttet den server, hvor filen findes.
/web/Adpd/admin/fileupload.asp, line 242
Avatar billede w13 Novice
28. maj 2007 - 20:57 #6
Og stien er korrekt: "D:\web2007\Adpd\admin\db\brugerinfo.mdb" ? :)
Avatar billede remo27 Nybegynder
29. maj 2007 - 21:07 #7
nej stien hedder D:\web2007\Adpd\db\brugerinfo.mdb

men der er forskel på hvordan stien åbenbart skal se ud.

sætter jeg min sti således strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/brugerinfo.mdb") vil den ikke vise uploaddoc.asp

får denne fejl.

Fejltype:
Microsoft JET Database Engine (0x80004005)
"D:\web2007\db\brugerinfo.mdb" er ikke en gyldig sti. Kontroller, at stinavnet er stavet korrekt, og at du er tilsluttet den server, hvor filen findes.
/web/Adpd/admin/fileupload.asp, line 242


men sætter jeg filen til  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("./db/brugerinfo.mdb")
vil den godt vise uploaddoc.asp men jeg får denne fejl når jeg skal uploade.

Fejltype:
Microsoft JET Database Engine (0x80004005)
"D:\web2007\Adpd\admin\db\brugerinfo.mdb" er ikke en gyldig sti. Kontroller, at stinavnet er stavet korrekt, og at du er tilsluttet den server, hvor filen findes.
/web/Adpd/admin/fileupload.asp, line 242


Det er ikke nemt.....
Avatar billede soerenlyn Nybegynder
29. maj 2007 - 21:37 #8
Prøv med:
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../Adpd/db/brugerinfo.mdb")
Avatar billede remo27 Nybegynder
29. maj 2007 - 21:55 #9
sorenlyn>> får denne fejl når jeg skal uploade

Fejltype:
Microsoft JET Database Engine (0x80004005)
"D:\web2007\Adpd\Adpd\db\brugerinfo.mdb" er ikke en gyldig sti. Kontroller, at stinavnet er stavet korrekt, og at du er tilsluttet den server, hvor filen findes.
/web/Adpd/admin/fileupload.asp, line 242
Avatar billede w13 Novice
29. maj 2007 - 23:42 #10
Så ret lige igen til: strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/brugerinfo.mdb")
Du burde ikke få fejl.. :S
Hvilke mappe er roden på din server?
Avatar billede remo27 Nybegynder
05. juni 2007 - 22:14 #11
w13>> min rodmappe hedder Adpd

Nu har jeg prøvet at sætte en databaseforbindelse ind & gjordt følgende
'Set rs = Server.CreateObject("ADODB.RecordSet")
'Set Conn = Server.CreateObject("ADODB.Connection")
'strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/brugerinfo.mdb")

nu kommer følgende fejl
Fejltype:
ADODB.Connection (0x800A0E79)
Handlingen er ikke tilladt, mens objektet er åbent.
/web/Adpd/admin/fileuploaddoc.asp, line 242



<!-- #INCLUDE FILE="../databaseforbindelse.asp" -->
<%
'---------------------------------------------------
'*** FileUpload                          ***
'*** af Lars Snyder ( pila@mailme.dk)      ***
'***  http://www.tipsogtricks-online.dk    ***
'*
'* Sprog: VBScript
'*
'* Input:
'* strPath        Streng med uploadpath, f.eks. "output/", "/asp/binary/upload/" eller ""
'* intMaxSize    Tilladte grænse for filerne filer der uploades. Hvis < 1 er der ingen grænse.
'* arrAcceptType  Array med accepterede Content-Type, f.eks. "image/gif", "image/jpeg". Hvis ("") er alle filtyper accepterede.
'* arrAcceptExt  Array med sidste dele af filnavne, f.eks. "gif", "jpg" eller "kundennefil.xls". Hvis ("") er alle ext accepterede.
'*
'* Output: 0 hvis filen er uploaded korrekt.
'*        1 Request fra bruger gik galt
'*        2 Content med name="fileupload" blev ikke fundet
'*        3 Ingen filnavn
'*        4 Content-Type accepteres ikke
'*        5 Ext accepteres ikke
'*        6 Filen er for stor
'*        7 Filen blev ikke uploaded korrekt
'* strContentType    Den fundne type, f.eks. "image/gif"
'* strFilename        Det fundne filnavn, f.eks. "button.gif"
'* intFileTotalBytes  Filens samlede størrelse, f.eks. 9853
'*
'* Eksempler på ContentTypes
'* Microsoft IE4              | Netscape NN4                                      | Beskrivelse
'* "image/gif"                | "image/gif"                                        | CompuServe Graphics Interchange (.gif)
'* "image/pjpeg"              | "image/jpeg"                                      | JPEG/JFIF Compliant (.jpg | .jif | .jpeg)
'* "application/octet-stream" | "application/msexcel"                              | Microsoft Excel-regneark (.xls)
'* "application/octet-stream" | "application/msword"                              | Microsoft Word-dokument (.doc)
'* "text/html"                | "text/html"                                        | HTML Document (.htm | .html)
'* "text/plain"              | "application/x-unknown-content-type-asp_auto_file" | Active Server Page (.asp)
'* "text/plain"              | "text/plain"                                      | Tekstdokument (.txt)
'* "text/plain"              | "application/x-unknown-content-type-Excel.CSV"    | Separeret fil (.csv)
'* "application/octet-stream" | "application/octet-stream"                        | Binær fil (.bin)
'* "application/octet-stream" | "application/octet-stream"                        | Uden kendt filtype (.lol)
'* Bemærk i øvrigt, at
'* a. Der er desværre forskel på den tekst Microsoft og Netscape anvender på samme filtype.
'* b. Microsoft evaulerer ikke kun filens efternavn, men også det faktiske indhold!

Function FileUpload(strPath, intMaxSize, arrAcceptType, arrAcceptExt, ByRef strContentType, ByRef strFilename, ByRef intFileTotalBytes)
    'Variable deklaration
    Dim intPostTotalBytes, intStartPos, intEndPos, i
    Dim bstrPostData, bstrDivider
    Dim strTemp, strFileSpec
    Dim arrSplit
    Dim vbCrLfB
    Dim bolStopLoop, bolContentTypeOK, bolExtOK
    Dim fs, ts, f

    'Sæt returværdier
    strContentType = ""
    strFilename = ""
    intFileTotalBytes = 0

    'Check: Er det faktisk POST upload?
    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then

        'Dan vbCrLf som binær streng
        vbCrLfB = ChrB(13) & ChrB(10)

        'Hent den binære POST fra brugeren
        intPostTotalBytes = Request.TotalBytes 'Find antallet af bytes i POST
        'bstrPostData = Request.BinaryRead(intPostTotalBytes) 'Hent POST til en binær streng
        If LenB(bstrPostData) <> intPostTotalBytes Then 'Check: Er antallet af bytes i POST forskelligt fra den binære streng?
            'Returner værdi og stop
            FileUpload = 1
            Exit Function
        End If

        'Hent delelinien inkl. vbCrLfB (altid hele første linje)
        bstrDivider = LeftB(bstrPostData, InStrB(bstrPostData, vbCrLfB) + 1)
       
        'Default StartPos
        intStartPos = 1
     
        'Find Content-Disposition hvor name="fileupload"
        bolStopLoop = False
        Do
            'Find starten af denne Content del (umiddelbart efter delelinien)
            intStartPos = InStrB(intStartPos, bstrPostData, bstrDivider) + LenB(bstrDivider)
            If intStartPos = 0 Then
                'Ikke flere Content delere - Returner værdi og stop
                FileUpload = 2
                Exit Function
            End If

            'Find slutningen af denne Content del (umiddelbart inden den næste delelinie)
            intEndPos = InStrB(intStartPos, bstrPostData, bstrDivider)
            If intEndPos = 0 Then
                'Ikke flere Content delere - Returner værdi og stop
                FileUpload = 2
                Exit Function
            End If

            'Hent denne Content-Disposition (uden vbCrLf)
            strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

            'Er fileupload feltet i denne Content-Disposition?
            If InStr(LCase(strTemp), "name=""fileupload""") > 0 Then
                'Stop løkken her
                bolStopLoop = True
            Else
                'Start igen umiddelbart efter denne Content, men før næste divider
                intStartPos = intEndPos
            End If
        Loop Until bolStopLoop

        'Flyt intStartPos til efter Content-Disposition linjen
        intStartPos = intStartPos + Len(strTemp) + 2

        'Ekstrakt POST filnavnet fra strTemp
        arrSplit = Split(strTemp, ";") 'Opdel strTemp ved ;: Content-Disposition: form-data; name="fileupload"; filename="filen.txt"

        'Find filnavnet fra filename= array
        strTemp = "" 'Værdi ved fejl
        For i = 0 To UBound(arrSplit) 'Køres for alle i denne array
            If LCase(Left(Trim(arrSplit(i)), 9)) = "filename=" Then 'Står der filename= ?
                strTemp = Trim(arrSplit(i))
                Exit For
            End If
        Next

        'Afbryd hvis der ikke blev fundet noget filnavn
        If strTemp = "" Or strTemp = "filename=""""" Then
            FileUpload = 3
            Exit Function
        End If

       
        'Find sub folder
        iStart = inStr(1,bin2str(bstrPostData),"name=""folder""")
        if iStart>0 then iSlut = inStr(iStart,bin2str(bstrPostData),"------")

        if iStart>0 or iSlut>0 then
          folder = (Mid(bin2str(bstrPostData),iStart+17,iSlut-iStart-19))
          if right(folder,1)<>"/" then folder = folder & "/"
        end if       
       
        'Find filnavnet
        arrSplit = Split(strTemp, """")        'Opdel streng ved "
        strTemp = arrSplit(UBound(arrSplit) - 1) 'Næstsidste indholder filnavn
        arrSplit = Split(strTemp, "\") 'Del ved alle \  Så indeholder den sidste filnavn.ext"
        strFilename = arrSplit(UBound(arrSplit)) 'Hent den sidste array, der må være filnavnet

        'Dan det fulde outputfilnavn via MapPath
        strFileSpec = Server.MapPath(LCase(strPath & folder & strFilename)) 'LCase kan evt fjernes herfra

        'Hent Content-Type (uden vbCrLf)
        strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

        'Flyt intStartPos til efter Content-Type linjen
        intStartPos = intStartPos + Len(strTemp) + 2
       
        'Ekstrakt POST Content-Type
        arrSplit = Split(strTemp, " ")
        strContentType = arrSplit(UBound(arrSplit))

        'Skal Content-Type checkes?
        bolContentTypeOK = False
        If arrAcceptType(LBound(arrAcceptType)) <> "" Then
            For Each strTemp In arrAcceptType
                If strContentType = strTemp Then
                    bolContentTypeOK = True
                End If
            Next

            'Check: Er det en accepteret Content-Type?
            If Not bolContentTypeOK Then
                'ContentType ikke fundet - Returner værdi og stop
                FileUpload = 4
                Exit Function
            End If
        End If

        'Skal ekstention checkes?
        bolExtOK = False
        If arrAcceptExt(LBound(arrAcceptExt)) <> "" Then
            For Each strTemp In arrAcceptExt
                If LCase(Right(strFilename, Len(strTemp))) = strTemp Then
                    bolExtOK = True
                End If
            Next

            'Check: Er det en accepteret ekstention?
            If Not bolExtOK Then
                'Ekstention ikke fundet - Returner værdi og stop
                FileUpload = 5
                Exit Function
            End If
        End If

        'Find faktiske start/slut på datafilen ved at fjerne foranstillede og efterstillede vbCrLfB
        intStartPos = intStartPos + 2
        intEndPos = intEndPos - 2
        intFileTotalBytes = intEndPos - intStartPos

        'Skal filstørrelsen checkes?
        If intMaxSize > 0 Then
            'Check: Er filen for stor?
            If intFileTotalBytes > intMaxSize Then
                'Filen er for stor - Returner værdi og stop
                FileUpload = 6
                Exit Function
            End If
        End If

        'Åbn, skriv og luk outputfilen
        Set fs = CreateObject("Scripting.FileSystemObject") 'Filsystem objekt
        Set ts = fs.CreateTextFile(strFileSpec, True) 'Åbn outputfil, overskriv evt. eksisterende
        For i = intStartPos To intEndPos - 1
            ts.Write(Chr(AscB(MidB(bstrPostData, i, 1)))) 'Skriv data eet tegn af gangen
        Next
        ts.Close 'Luk outputfil

        'Check: Blev filen oprettet og har den samme størrelse?
        Set f = fs.GetFile(strFileSpec)
        If f.Size <> intFileTotalBytes Then
                FileUpload = 7
                Exit Function
        End If

        '* Returner OK
        FileUpload = 0
    End If
End Function

'* Funktion der oversætter en bstr binær streng til en almindelig streng
'* Pas på med 00 værdier, da de fungerer som EOF i en almindelig streng
Function bin2str(bstrBinary)
    Dim i
    For i = 1 To LenB(bstrBinary)
      bin2str = bin2str & Chr(AscB(MidB(bstrBinary, i, 1)))
    Next
End Function
'Set rs = Server.CreateObject("ADODB.RecordSet")
'Set Conn = Server.CreateObject("ADODB.Connection")
'strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/brugerinfo.mdb")
Conn.Open strDSN

strSQL = "SELECT * FROM [download]"
rs.Open strSQL, strDSN, 2, 2
rs.AddNew

rs("titel") = Replace(Request.Form("titel"),"'","&#39;")
rs("doc") = Replace(Request.Form("doc"),"'","&#39;")
rs("emne") = Replace(Request.Form("emne"),"'","&#39;")

rs.Update
rs.Close

Conn.Close
set rs = Nothing
set Close = nothing
set Conn = nothing
%>

ps. jeg har omdøbt denne fil til fileuploaddoc.asp, da fileupload.asp bruges et andet sted på hjemmesiden til at uploade grafik til mappe.
Avatar billede w13 Novice
05. juni 2007 - 22:52 #12
Jamen hvis mappen "db" ligger i roden, så skal du bare skrive "/db/brugerinfo.mdb"
Når en sti begynder med "/", så starter den alid i roden!
Avatar billede w13 Novice
05. juni 2007 - 22:54 #13
Din fejl skyldes sikkert, at du har appostroffer foran:
'Set rs = Server.CreateObject("ADODB.RecordSet")
'Set Conn = Server.CreateObject("ADODB.Connection")
'strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/brugerinfo.mdb")
Avatar billede remo27 Nybegynder
03. juli 2007 - 21:20 #14
w13 drop et svar.
Avatar billede w13 Novice
05. juli 2007 - 13:05 #15
Svar :)
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