בעיה בUPLOAD

  • פותח הנושא galo
  • פורסם בתאריך

galo

New member
בעיה בUPLOAD

כאשר אני מריץ את הקובץ ומנסה להעלות קובץ תמונה אני מקבל : Microsoft VBScript runtime error ´800a0005´ Invalid procedure call or argument /asp/upload/upload_file.asp, line 33 מצד שני קבצי טקסט אין לי בעיה להעלות... יש רעיונות?
 

galo

New member
הנה שורה 33+בונוס גם 32 וגם 34

For i = 1 to LenB(value) MyFile.Write chr(AscB(MidB(value,i,1))) Next
 

galo

New member
הנה הקוד המלא

הנה הקוד המלא, מה שמוזר שלמרות הודעת השגיאה, הוא מעביר את הקובץ, ולעיתים רבות הורס אותו, מגיע לשרת בנפח 0! <% Response.Expires=0 Response.Buffer = TRUE Response.Clear %> <html> <body bgcolor="#000000" text="#FFFFFF"> <% byteCount = Request.TotalBytes ´Response.BinaryWrite(Request.BinaryRead(varByteCount)) RequestBin = Request.BinaryRead(byteCount) Dim UploadRequest Set UploadRequest = CreateObject("Scripting.Dictionary") BuildUploadRequest RequestBin contentType = UploadRequest.Item("thefile").Item("ContentType") filepathname = UploadRequest.Item("thefile").Item("FileName") filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\")) value = UploadRequest.Item("thefile").Item("Value") ´Create FileSytemObject Component Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject") ´Create and Write to a File pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-10 THE_FILE = Server.MapPath(filename) Set MyFile = ScriptObject.CreateTextFile(THE_FILE) For i = 1 to LenB(value) MyFile.Write chr(AscB(MidB(value,i,1))) Next MyFile.Close Sub BuildUploadRequest(RequestBin) ´Get the boundary PosBeg = 1 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13))) boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg) boundaryPos = InstrB(1,RequestBin,boundary) ´Get all data inside the boundaries Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--"))) ´Members variable of objects are put in a dictionary object Dim UploadControl Set UploadControl = CreateObject("Scripting.Dictionary") ´Get an object name Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition")) Pos = InstrB(Pos,RequestBin,getByteString("name=")) PosBeg = Pos+6 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34))) Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename=")) PosBound = InstrB(PosEnd,RequestBin,boundary) ´Test if object is of file type If PosFile<>0 AND (PosFile<PosBound) Then ´Get Filename, content-type and content of file PosBeg = PosFile + 10 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34))) FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) ´Add filename to dictionary object UploadControl.Add "FileName", FileName Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:")) PosBeg = Pos+14 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13))) ´Add content-type to dictionary object ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) UploadControl.Add "ContentType",ContentType ´Get content of object PosBeg = PosEnd+4 PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg) Else ´Get content of object Pos = InstrB(Pos,RequestBin,getByteString(chr(13))) PosBeg = Pos+4 PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) End If ´Add content to dictionary object UploadControl.Add "Value" , Value ´Add dictionary object to main dictionary UploadRequest.Add name, UploadControl ´Loop to next object BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary) Loop End Sub ´String to byte string conversion Function getByteString(StringStr) For i = 1 to Len(StringStr) char = Mid(StringStr,i,1) getByteString = getByteString & chrB(AscB(char)) Next End Function ´Byte string to string conversion Function getString(StringBin) getString ="" For intCount = 1 to LenB(StringBin) getString = getString & chr(AscB(MidB(StringBin,intCount,1))) Next End Function %> The File <B><%=THE_FILE%></B> Uploaded Successfully! </body> </html>
 
אמאל´ה

אני לא כזה מומחה בהעלאת קבצים עם אובייקט Scripting... אבל הסיבה לזה היא חוסר היציבות שלו. שמעתי וקראתי ביותר מדי מקומות על סיבות למה _לא_ להשתמש בו ובמקום זה להשתמש באובייקט צד ג´ (עם השתתפות עצמית) שמיועד למטרה הזאת. כבר המלצתי כאן על האובייקט ABCUpload... הוא חינם, הוא פשוט, הוא מעולה ואני משתמש בו בלי שום בעיה.
 

קיפוש

New member
פעם מישהו נתן פה קישור ...

לאתר עם רישמה מסודרת של אובייקטים אם ההודעות פה לא היו קופצות הייתי שמח למצוא את הלינק... אבל בשביל מה יש מנהלת לפורום
וזה מזכיר לי שאני הולך לעשות רשימה ארוכה של כל החינמים האלה לעלות עת השרת שלי רק ליצר בטחון ... (ואגב, טוב שיש שם DDL, ככה אולי סוף סוף התאריך העברי יוכל לקבל ביטוי באתר שלי
)
 
למעלה