ciao a tutti,
eseguo l'upload di 3 file tramite scripting asp con il seguente codice:
ripetuto tre volte .. nella pagina di provenienza c'è un form con tre campi file rispettivamente File1, File2, File3 che poi io pesco nel codice incollato qua sopra a seconda se sia la prima esecuzione dell'upload, la seconda o la terza.. ora..codice:Dim oUpload Dim oFile Dim sFileName Dim oFSO Dim sPath Dim sNewData Dim nLength Dim bytBinaryData Const nForReading = 1 Const nForWriting = 2 Const nForAppending = 8 ' grab the uploaded file data Set oUpload = New clsUpload Set oFile = oUpload("File1") ' parse the file name sFileName = oFile.FileName If Not InStr(sFileName, "\") = 0 Then sFileName = Mid(sFileName, InStrRev(sFileName, "\") + 1) End If ' Convert the binary data to Ascii bytBinaryData = oFile.BinaryData nLength = LenB(bytBinaryData) For nIndex = 1 To nLength sNewData = sNewData & Chr(AscB(MidB(bytBinaryData, nIndex, 1))) Next ' Save the file to the file system sPath = Server.MapPath("/public/profili/"&var&"") & "\" Set oFSO = Server.CreateObject("Scripting.FileSystemObject") oFSO.OpenTextFile(sPath & sFileName, nForWriting, True).Write sNewData Set oFSO = Nothing Set oFile = Nothing Set oUpload = Nothing
all'inizio della pagina ho un include del file upload.class dove poi si genera questo errore:
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'MidB'
/profili/upload.class, line 148
la cosa strana è che se io non ripeto più di una volta l'upload con il codice di cui sopra questo errore non c'è, se invece lo faccio 2 o 3 volte mi scatta l'errore... ecco le righe fino a quella incriminata (Che è l'ultima) nel file upload.class
Lo so che è difficile e un po noioso ma vi offro una cena se mi aiutate e se siete ragazze carine.. grazie..codice:' ------------------------------------------------------------------------------ ' Container of Field Properties Class clsField Public FileName Public ContentType Public Value Public FieldName Public Length Public BinaryData End Class ' ------------------------------------------------------------------------------ Class clsUpload ' ------------------------------------------------------------------------------ Private nFieldCount Private oFields() ' ------------------------------------------------------------------------------ Public Property Get Count() Count = nFieldCount End Property ' ------------------------------------------------------------------------------ Public Default Property Get Field(ByRef asFieldName) Dim lnLength Dim lnIndex lnLength = UBound(oFields) If IsNumeric(asFieldName) Then If lnLength >= asFieldName And asFieldName > -1 Then Set Field = oFields(asFieldName) Else Set Field = New clsField End If Else For lnIndex = 0 To lnLength If LCase(oFields(lnIndex).FieldName) = LCase(asFieldName) Then Set Field = oFields(lnIndex) Exit Property End If Next Set Field = New clsField End If End Property ' ------------------------------------------------------------------------------ Public Function Exists(ByRef avKeyIndex) Exists = Not IndexOf(avKeyIndex) = -1 End Function ' ------------------------------------------------------------------------------ Public Property Get ValueOf(ByRef avKeyIndex) Dim lnIndex lnIndex = IndexOf(avKeyIndex) if lnIndex = -1 Then Exit Property ValueOf = oFields(lnIndex).Value End Property ' ------------------------------------------------------------------------------ Public Property Get FileNameOf(ByRef avKeyIndex) Dim lnIndex lnIndex = IndexOf(avKeyIndex) if lnIndex = -1 Then Exit Property FileNameOf = oFields(lnIndex).FileName End Property ' ------------------------------------------------------------------------------ Public Property Get LengthOf(ByRef avKeyIndex) Dim lnIndex lnIndex = IndexOf(avKeyIndex) if lnIndex = -1 Then Exit Property LengthOf = oFields(lnIndex).LengthOf End Property ' ------------------------------------------------------------------------------ Public Property Get BinaryDataOf(ByRef avKeyIndex) Dim lnIndex lnIndex = IndexOf(avKeyIndex) if lnIndex = -1 Then Exit Property BinaryDataOf = oFields(lnIndex).BinaryData End Property ' ------------------------------------------------------------------------------ Private Function IndexOf(ByVal avKeyIndex) Dim lnIndex If IsNumeric(asFieldName) Then avKeyIndex = CLng(avKeyIndex) If nFieldCount > avKeyIndex And avKeyIndex > -1 Then IndexOf = avKeyIndex Else IndexOf = -1 End If Else For lnIndex = 0 To nFieldCount - 1 If LCase(oFields(lnIndex).FieldName) = LCase(avKeyIndex) Then IndexOf = lnIndex Exit Function End If Next IndexOf = -1 End If End Function ' ------------------------------------------------------------------------------ Public Property Get ContentTypeOf(ByRef avKeyIndex) Dim lnIndex lnIndex = IndexOf(avKeyIndex) if lnIndex = -1 Then Exit Property ContentTypeOf = oFields(lnIndex).ContentType End Property ' ------------------------------------------------------------------------------ Private Sub Class_Terminate() For lnIndex = 0 To nFieldCount - 1 Set oFields(0) = Nothing Next End Sub ' ------------------------------------------------------------------------------ Private Sub Class_Initialize() Dim lnBytes ' Bytes received from the client Dim lnByteCount ' Number of bytes received Dim lnStartPosition ' Position at which content begins Dim lnEndPosition ' Position at which content ends Dim loDic ' Contains properties of each ' specific field ' Local dictionary object(s) ' to be appended to class-scope ' dictioary object. Dim lnBoundaryBytes ' Bytes contained within the current boundary Dim lnBoundaryStart ' Position at wich the current boundary begins ' within the lnBytes binary data. Dim lnBoundaryEnd ' Position at wich the current boundary ends ' within the lnBytes binary data. Dim lnDispositionPosition Dim lsFieldName ' Name of the current field being parsed from ' Binary Data Dim lsFileName ' Name of the file within the current boundary Dim lnFileNamePosition ' Location of file name within current boundary ' Initialize Fields nFieldCount = 0 ReDim oFields(-1) ' Read the bytes (binary data) into memory lnByteCount = Request.TotalBytes lnBytes = Request.BinaryRead(lnByteCount) 'Get the lnBoundaryBytes lnStartPosition = 1 lnEndPosition = InstrB(lnStartPosition, lnBytes, CStrB(vbCr)) lnBoundaryBytes = MidB(lnBytes, lnStartPosition, lnEndPosition - lnStartPosition)![]()

Rispondi quotando