Avatar billede jsc Nybegynder
21. marts 2003 - 21:24 Der er 25 kommentarer og
1 løsning

Cannot call BinaryRead

Hej...

Jeg har et problem med mit upload script...

Jeg har lavet upload scriptet for noget tid siden, og nu skulle jeg så bruge det igen, men med en Request.form() kommando i.

Jeg får denne fejl:
-------------------

Request object error 'ASP 0206 : 80004005'

Cannot call BinaryRead

/ftp/upfile.asp, line 13

Cannot call BinaryRead after using Request.Form collection.

--------------------

Nogle foreslag til hvad man kan gøre ved det? - hvordan kan jeg få begge ting uden at de "påvirker" hinanden??

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:26 #1
Du skal ikke bruger request.form med din uploadcomponent.form("...") - hvad
den nu hedder
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:26 #2
Suk:
Du skal ikke bruger request.form mMEN din uploadcomponent.form("...") - hvad
den nu hedder
Avatar billede jsc Nybegynder
21. marts 2003 - 21:28 #3
????

det går jeg vist heller ikke.. jeg bruger request.form til at bestemme uploadmappen med... det vil sige biblioteket hvor filen kommer til at ligge!

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:33 #4
Din kode?
Avatar billede jsc Nybegynder
21. marts 2003 - 21:36 #5
Som du vil:

-------------------


<%@ LANGUAGE="VBScript" %>
<%

Response.Expires = -1
Response.Buffer = True
Response.Clear

Dim cdpBinaryData,cdpBoundary,cdpBoundPosition,cdpCharacter,cdpContentType,cdpCount,cdpDicUploadControl,cdpDicUploadRequest,cdpEndPosition,cdpFile,cdpFileName,cdpFilePath,cdpFilePosition,cdpFileSize,cdpFSO,cdpI,cdpName,cdpPosition,cdpPositionBoundary,cdpStartPosition,cdpTotalBytes,cdpValue,strmappe

' her henter jeg request'en
strmappe = request.form("upload_mappe")

cdpTotalBytes = Request.TotalBytes
cdpBinaryData = Request.BinaryRead(cdpTotalBytes)
Set cdpDicUploadRequest = CreateObject("Scripting.Dictionary")
cdpUploadRoutine cdpBinaryData
cdpContentType = cdpDicUploadRequest("theFile")("cdpContentType")
cdpFilePath = cdpDicUploadRequest("theFile")("cdpFileName")
cdpFileName = Right(cdpFilePath,Len(cdpFilePath)-InstrRev(cdpFilePath,"\"))

If Not cdpFileName = "" Then
    cdpValue = cdpDicUploadRequest("theFile")("cdpValue")
    Set cdpFSO = Server.CreateObject("Scripting.FileSystemObject")

' her indsætter jeg variablen strmappe
    Set cdpFile = cdpFSO.CreateTextFile(Server.mappath(strmappe & cdpFileName))
   
    For cdpI = 1 To LenB(cdpValue)
        cdpFile.Write Chr(AscB(MidB(cdpValue,cdpI,1)))
    Next
   
    cdpFile.Close
    Set cdpFile = Nothing
   
    Sub cdpUploadRoutine(cdpBinaryData)
        cdpStartPosition = 1
        cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
        cdpBoundary = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
        cdpPositionBoundary = InstrB(1,cdpBinaryData,cdpBoundary)
       
        Do until (cdpPositionBoundary=InstrB(cdpBinaryData,cdpBoundary & getByteString("--")))
            Set cdpDicUploadControl = CreateObject("Scripting.Dictionary")
            cdpPosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("Content-Disposition"))
            cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString("name="))
            cdpStartPosition = cdpPosition + 6
            cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
            cdpName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            cdpFilePosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("filename="))
            cdpBoundPosition = InstrB(cdpEndPosition,cdpBinaryData,cdpBoundary)
           
            If  cdpFilePosition <> 0 And (cdpFilePosition<cdpBoundPosition) Then
                cdpStartPosition = cdpFilePosition + 10
                cdpEndPosition =  InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
                cdpFileName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpFileName", cdpFileName
                cdpPosition = InstrB(cdpEndPosition,cdpBinaryData,getByteString("Content-Type:"))
                cdpStartPosition = cdpPosition + 14
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpContentType = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpContentType",cdpContentType
                cdpStartPosition = cdpEndPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
            Else
                cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpStartPosition = cdpPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            End If
           
            cdpDicUploadControl.Add "cdpValue" , cdpValue   
            cdpDicUploadRequest.Add cdpName, cdpDicUploadControl   
            cdpPositionBoundary=InstrB(cdpPositionBoundary+LenB(cdpBoundary),cdpBinaryData,cdpBoundary)
        Loop
    End Sub
   
    Function getByteString(StringStr)
        For cdpI = 1 To Len(StringStr)
            cdpCharacter = Mid(StringStr,cdpI,1)
            getByteString = getByteString & chrB(AscB(cdpCharacter))
        Next
    End Function
   
    Function getString(cdpBinaryString)
        getString = ""
       
        For cdpCount = 1 To LenB(cdpBinaryString)
            getString = getString & Chr(AscB(MidB(cdpBinaryString,cdpCount,1)))
        Next
    End Function
   
    cdpFileSize = cdpTotalBytes / 1024
    cdpFileSize = Round(cdpFileSize, 2)
    Response.Write("<title>Filen " & cdpFileName & " blev uploaded! - Størrelse: " & cdpFileSize & " kb.</title>")
    Response.Write("Filen " & cdpFileName & " blev Uploaded! - Størrelse: " & cdpFileSize & " kb.<br />")
    response.redirect "default.asp?action=ftp&besked=Uploaded!"
End If
%>

-----------------

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:36 #6
Men jeg tror nu nok jeg har ret, se fx: http://www.aspupload.com/manual_simple.html
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:36 #7
Du bruger ingen upload-komponent?
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:38 #8
Så skal du nok bare aflæse

cdpDicUploadRequest("ditfeltnavn")
Avatar billede jsc Nybegynder
21. marts 2003 - 21:43 #9
det vil sige kortsagt at jeg skal bruge cdpDicUploadRequest("upload_mappe") i stedet for request.form("upload_mappe") ???

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:45 #10
Prøv det - jeg gætter bare
Avatar billede jsc Nybegynder
21. marts 2003 - 21:48 #11
fejl:

Microsoft VBScript runtime error '800a000d'

Type mismatch

/ftp/upfile.asp, line 12

linie 12: strmappe = cdpDicUploadRequest("upload_mappe")
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:51 #12
Du skal ikke gøre det først, men sidst - når data er indlæst.
Bortset fra jeg ikke aner om det virker,
Avatar billede jsc Nybegynder
21. marts 2003 - 21:54 #13
jeg ved ikke om det gør det bedre, jeg prøvede at sætte den direkte ind:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment

/ftp/upfile.asp, line 24

linie 24: Set cdpFile = cdpFSO.CreateTextFile(Server.mappath(cdpDicUploadRequest("upload_mappe") & cdpFileName))

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 21:59 #14
Det er nok der du skal gøre det, men tag det lige i små skridt
og skriv noget ud undervejs, så vi kan se hvad der sker
Avatar billede jsc Nybegynder
21. marts 2003 - 22:01 #15
ok.. rettet kode:

---------------------


<%@ LANGUAGE="VBScript" %>
<%

Response.Expires = -1
Response.Buffer = True
Response.Clear

Dim cdpBinaryData,cdpBoundary,cdpBoundPosition,cdpCharacter,cdpContentType,cdpCount,cdpDicUploadControl,cdpDicUploadRequest,cdpEndPosition,cdpFile,cdpFileName,cdpFilePath,cdpFilePosition,cdpFileSize,cdpFSO,cdpI,cdpName,cdpPosition,cdpPositionBoundary,cdpStartPosition,cdpTotalBytes,cdpValue

cdpTotalBytes = Request.TotalBytes
cdpBinaryData = Request.BinaryRead(cdpTotalBytes)
Set cdpDicUploadRequest = CreateObject("Scripting.Dictionary")
cdpUploadRoutine cdpBinaryData
cdpContentType = cdpDicUploadRequest("theFile")("cdpContentType")
cdpFilePath = cdpDicUploadRequest("theFile")("cdpFileName")
cdpFileName = Right(cdpFilePath,Len(cdpFilePath)-InstrRev(cdpFilePath,"\"))




If Not cdpFileName = "" Then
    cdpValue = cdpDicUploadRequest("theFile")("cdpValue")
    Set cdpFSO = Server.CreateObject("Scripting.FileSystemObject")



    Set cdpFile = cdpFSO.CreateTextFile(Server.mappath(cdpDicUploadRequest("upload_mappe") & cdpFileName))
   



    For cdpI = 1 To LenB(cdpValue)
        cdpFile.Write Chr(AscB(MidB(cdpValue,cdpI,1)))
    Next
   
    cdpFile.Close
    Set cdpFile = Nothing
   
    Sub cdpUploadRoutine(cdpBinaryData)
        cdpStartPosition = 1
        cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
        cdpBoundary = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
        cdpPositionBoundary = InstrB(1,cdpBinaryData,cdpBoundary)
       
        Do until (cdpPositionBoundary=InstrB(cdpBinaryData,cdpBoundary & getByteString("--")))
            Set cdpDicUploadControl = CreateObject("Scripting.Dictionary")
            cdpPosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("Content-Disposition"))
            cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString("name="))
            cdpStartPosition = cdpPosition + 6
            cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
            cdpName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            cdpFilePosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("filename="))
            cdpBoundPosition = InstrB(cdpEndPosition,cdpBinaryData,cdpBoundary)
           
            If  cdpFilePosition <> 0 And (cdpFilePosition<cdpBoundPosition) Then
                cdpStartPosition = cdpFilePosition + 10
                cdpEndPosition =  InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
                cdpFileName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpFileName", cdpFileName
                cdpPosition = InstrB(cdpEndPosition,cdpBinaryData,getByteString("Content-Type:"))
                cdpStartPosition = cdpPosition + 14
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpContentType = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpContentType",cdpContentType
                cdpStartPosition = cdpEndPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
            Else
                cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpStartPosition = cdpPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            End If
           
            cdpDicUploadControl.Add "cdpValue" , cdpValue   
            cdpDicUploadRequest.Add cdpName, cdpDicUploadControl   
            cdpPositionBoundary=InstrB(cdpPositionBoundary+LenB(cdpBoundary),cdpBinaryData,cdpBoundary)
        Loop
    End Sub
   



    Function getByteString(StringStr)
        For cdpI = 1 To Len(StringStr)
            cdpCharacter = Mid(StringStr,cdpI,1)
            getByteString = getByteString & chrB(AscB(cdpCharacter))
        Next
    End Function
   



    Function getString(cdpBinaryString)
        getString = ""
       
        For cdpCount = 1 To LenB(cdpBinaryString)
            getString = getString & Chr(AscB(MidB(cdpBinaryString,cdpCount,1)))
        Next
    End Function
   



    cdpFileSize = cdpTotalBytes / 1024
    cdpFileSize = Round(cdpFileSize, 2)
    Response.Write("<title>Filen " & cdpFileName & " blev uploaded! - Størrelse: " & cdpFileSize & " kb.</title>")
    Response.Write("Filen " & cdpFileName & " blev Uploaded! - Størrelse: " & cdpFileSize & " kb.<br />")
    response.redirect "default.asp?action=ftp&besked=Uploaded!"
End If
%>

---------------

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 22:03 #16
Du gør det ikke i små skridt ?
Avatar billede jsc Nybegynder
21. marts 2003 - 22:04 #17
undskyld.. men hvad er små skridt så.. du skal vel have hele koden ..

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 22:06 #18
Nej, i stedet for at lave en lang sætning, så gør det i
små skridt så du kan se hvor det går galt
Avatar billede jsc Nybegynder
21. marts 2003 - 22:26 #19
jaja.. men det er nu stadig svært..

Men er du kommet frem til en løsning, må du da også meget gerne sende det kode, du måske har fået ud arbejdet, istedet for at sidde og sige at den passer der og jeg skal flytte rundt på noget af det. Det giver ikke ret meget mening her..

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 22:27 #20
Nej, jeg laver ingen løsning - det er dit problem :)
Avatar billede jsc Nybegynder
21. marts 2003 - 22:29 #21
det er klart det er mit problem...

men det er sku da også ondsvagt et eller andet sted, at lade vær med at hjælpe, hvis folk virkelig ikke kan se det...

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 22:33 #22
Jamen jeg kan ikke se hvad der er galt. Jeg foreslår
dig en metode til selv at finde ud af det. Du må selv
om du følger den - som sagt er det ikke mit problem...;)
Avatar billede jsc Nybegynder
21. marts 2003 - 22:37 #23
du har ret.. stadig mit problem

men jeg går ud fra at du aldrig lavet løsning til nogen, og det er derfor jeg brokker mig :D
det er derfor jeg synes det er skidt at du kun skrive at du måske kunne gøre noget af det.. om ikke andet så bliver det ikke bedre af at det er en nybegynder der sidder med skidtet..

Jeg vil se på dine foreslag nu.. og dit link ser godt ud.. så tak for hjælpen indtil videre..

/jsc
Avatar billede erikjacobsen Ekspert
21. marts 2003 - 22:39 #24
Jeg forstår ikke hvad du brokker dig over. Jeg smutter ud af spørgsmålet
Avatar billede jsc Nybegynder
21. marts 2003 - 22:39 #25
:D ok.. dit valg..
Avatar billede jsc Nybegynder
22. marts 2003 - 21:42 #26
Jeg har fundet en løsning, hvor jeg bruger request.querystring("upload_mappe") istedet for request.form("upload_mappe").. så jeg lukker spm'et!

/jsc
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