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
Annonceindlæg fra Computerworld
21. marts 2003 - 21:26
#1
Du skal ikke bruger request.form med din uploadcomponent.form("...") - hvad den nu hedder
21. marts 2003 - 21:26
#2
Suk: Du skal ikke bruger request.form mMEN din uploadcomponent.form("...") - hvad den nu hedder
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
21. marts 2003 - 21:33
#4
Din kode?
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
21. marts 2003 - 21:36
#6
21. marts 2003 - 21:36
#7
Du bruger ingen upload-komponent?
21. marts 2003 - 21:38
#8
Så skal du nok bare aflæse cdpDicUploadRequest("ditfeltnavn")
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
21. marts 2003 - 21:45
#10
Prøv det - jeg gætter bare
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")
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,
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
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
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
21. marts 2003 - 22:03
#16
Du gør det ikke i små skridt ?
21. marts 2003 - 22:04
#17
undskyld.. men hvad er små skridt så.. du skal vel have hele koden .. /jsc
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
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
21. marts 2003 - 22:27
#20
Nej, jeg laver ingen løsning - det er dit problem :)
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
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...;)
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
21. marts 2003 - 22:39
#24
Jeg forstår ikke hvad du brokker dig over. Jeg smutter ud af spørgsmålet
21. marts 2003 - 22:39
#25
:D ok.. dit valg..
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
Kurser inden for grundlæggende programmering