Avatar billede snoezel Nybegynder
16. juni 2003 - 12:59 Der er 8 kommentarer

Upload fejler på mac

Hejsa, er der nogen der ved hvorfor en upload funktion virker fra pc men ikke på en machintosh computer ? upload funktionen på asp siden, bruger:

Server.CreateObject("Scripting.Dictionary")
Avatar billede reino Nybegynder
16. juni 2003 - 22:52 #1
Hej

Hvilken fejlmeddelelse får du ?. Lyder noget spøjst da koden ikke bliver eksveret lokalt men på selve serveren.
Avatar billede snoezel Nybegynder
17. juni 2003 - 09:50 #2
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
Fejlen der kommer ser sådan ud, kan det være noget med at en MAC ikke viser stien i tekstboksen efter at man har valgt filen, hvorimod en PC ville skrive eksempelvis c:\filer\upload\test.doc efter tryk på gennemse ??

[Microsoft][ODBC Microsoft Access Driver] Field 'upload.upload_filnavn' cannot be a zero-length string.
Avatar billede reino Nybegynder
17. juni 2003 - 10:05 #3
det lyder som om der er en syntaksfejl i htmlen som ikke poster den variabel med den skal. Det er højst sandsynligt fordi siden er beregnet til IE 5.5 og opefter, max ver. til Mac på IE er 5.0 da Microsoft er stoppet med opdateringer til IE på mac. Jeg er ret sikker på det er htmlen der er noget fejl i.
Avatar billede snoezel Nybegynder
17. juni 2003 - 10:16 #4
Burde det så virke,som det er nu, hvis man benytter netscape på en mac ?
Avatar billede reino Nybegynder
17. juni 2003 - 10:18 #5
Kommer an på hvilken ver. det er, burder virke så ved min. 6.0
Avatar billede snoezel Nybegynder
17. juni 2003 - 13:32 #6
Det må nok tænktes at være som reino siger, samme programmering virker helt fint på en mac med Netscape browser.

Reino>> kan du komme mere ind på din ide på problemet ? :-)
Avatar billede reino Nybegynder
17. juni 2003 - 13:41 #7
Ja, som sagt, den htmlkode der ligger på formularsiden, altså som poster dataerne til uploadscriptet, sender ikke den variabel uploadscriptet har brug for. Ergo dette har noget at gøre med kodningen af formular siden. Det er denne kode der skal gennemgåes så den også passer til IE 5.0. :)
Avatar billede snoezel Nybegynder
19. juni 2003 - 09:51 #8
Formular siden kan næsten ikke fejle noget, den sender blot et felt afsted med navnet "File", koden til upload,prøver jeg at poste herunder - er det mon noget med tegnet \ - har hørt at det ikke bruges på MAC ??
-------------------------------------------------------------
<%
'***************************************
' File:      Upload.asp
' Author: Jacob "Beezle" Gilley
' Email:  avis7@airmail.net
' Date:  12/07/2000
' Comments: The code for the Upload, CBytest1ring,
'            CWidest1ring    subroutines was originally
'            written by Philippe Collignon...or so
'            he claims. Also, I am not responsible
'            for any ill effects this script may
'            cause and provide this script "AS IS".
'            Enjoy!
'****************************************
const1 max_upload=10000000
const1 NumSeconds=1000

Server.ScriptTimeout = NumSeconds


Class FileUploader
    Public  Files
    Private mcolFormElem

    Private Sub Class_Initialize()
        Set Files = Server.CreateObject("Scripting.Dictionary")
        Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
    End Sub
   
    Private Sub Class_Terminate()
        If IsObject(Files) Then
            Files.RemoveAll()
            Set Files = Nothing
        End If
        If IsObject(mcolFormElem) Then
            mcolFormElem.RemoveAll()
            Set mcolFormElem = Nothing
        End If
    End Sub

    Public Property Get Form(sIndex)
        Form = ""
        If mcolFormElem.Exist1s(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
    End Property

    Public Default Sub Upload()
        Dim biData, sInputName
        Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
        Dim nPosFile, nPosBound

        biData = Request1.BinaryRead(Request1.TotalBytes)
        nPosBegin = 1
        nPosEnd = Inst1rB(nPosBegin, biData, CBytest1ring(Chr(13)))
       
        If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
       
        vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
        nDataBoundPos = Inst1rB(1, biData, vDataBounds)
       
        Do Until nDataBoundPos = Inst1rB(biData, vDataBounds & CBytest1ring("--"))
           
            nPos = Inst1rB(nDataBoundPos, biData, CBytest1ring("Content-Disposition"))
            nPos = Inst1rB(nPos, biData, CBytest1ring("name="))
            nPosBegin = nPos + 6
            nPosEnd = Inst1rB(nPosBegin, biData, CBytest1ring(Chr(34)))
            sInputName = CWidest1ring(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
            nPosFile = Inst1rB(nDataBoundPos, biData, CBytest1ring("filename="))
            nPosBound = Inst1rB(nPosEnd, biData, vDataBounds)
           
            If nPosFile <> 0 And  nPosFile < nPosBound Then
                Dim oUploadFile, sFileName
                Set oUploadFile = New UpFiles
               
                nPosBegin = nPosFile + 10
                nPosEnd =  Inst1rB(nPosBegin, biData, CBytest1ring(Chr(34)))
                sFileName = CWidest1ring(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
                oUploadFile.FileName = Right(sFileName, Len(sFileName)-Inst1rRev(sFileName, "\"))

                nPos = Inst1rB(nPosEnd, biData, CBytest1ring("Content-Type:"))
                nPosBegin = nPos + 14
                nPosEnd = Inst1rB(nPosBegin, biData, CBytest1ring(Chr(13)))
               
                oUploadFile.ContentType = CWidest1ring(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
               
                nPosBegin = nPosEnd+4
                nPosEnd = Inst1rB(nPosBegin, biData, vDataBounds) - 2
                oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
               
                If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
            Else
                nPos = Inst1rB(nPos, biData, CBytest1ring(Chr(13)))
                nPosBegin = nPos + 4
                nPosEnd = Inst1rB(nPosBegin, biData, vDataBounds) - 2
                If Not mcolFormElem.Exist1s(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWidest1ring(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
            End If

            nDataBoundPos = Inst1rB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
        Loop
    End Sub

    'st1ring to byte st1ring conversion
    Private Function CBytest1ring(sst1ring)
        Dim nIndex
        For nIndex = 1 to Len(sst1ring)
          CBytest1ring = CBytest1ring & ChrB(AscB(Mid(sst1ring,nIndex,1)))
        Next
    End Function

    'Byte st1ring to st1ring conversion
    Private Function CWidest1ring(bsst1ring)
        Dim nIndex
        CWidest1ring =""
        For nIndex = 1 to LenB(bsst1ring)
          CWidest1ring = CWidest1ring & Chr(AscB(MidB(bsst1ring,nIndex,1)))
        Next
    End Function
End Class

function okNavn(st1)
    const1 okTag="ABCDEFGHIJKLMNOPQRst1UVWXYZabcdefghijklmnopqrst1uvwxyz0123456789_."
    dim i,st12
    st12=""
    for i=1 to len(st1)
      if inst1r(okTag,right(left(st1,i),1))=0 then
            st12=st12 & "_"
        else
          st12=st12 & right(left(st1,i),1)
        end if
    next
    do while inst1r(st12,"__")<>0
      st12=replace(st12,"__","_")
    loop
    okNavn=st12
end function

Class UpFiles
    Public ContentType
    Public FileName
    Public FileData
   
    Public Property Get FileSize()
        FileSize = LenB(FileData)
    End Property

    Public Sub SaveOnDisk(sPath)
        Dim oFS, oFile
        Dim nIndex
        dim filnavn
       
        If sPath = "" Or FileName = "" Then Exit Sub
        If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
   
        Set oFS = Server.CreateObject("Scripting.FileSystemObject")
        If Not oFS.FolderExist1s(sPath) Then Exit Sub
        filename=okNavn(filename)
        Set oFile = oFS.CreateTextFile(sPath & FileName, True)
       
        For nIndex = 1 to LenB(FileData)
            oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
        Next

        oFile.Close
    End Sub
   
    Public Sub SaveToDatabase(ByRef oField)
        If LenB(FileData) = 0 Then Exit Sub
       
        If IsObject(oField) Then
            oField.AppendChunk FileData
        End If
    End Sub

End Class
%>
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