Newsgroup: it.comp.www.asp
Titolo: upload in ASP - problema

ho relaizzato una pagina dove ci sono due moduli per selezionare i file per 
upload ,
se faccio l'uoload su uno dei due funziona tutto correttamente , se invece 
cerco di caricare due file mi da errore
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'MidB'
/secured/admin/uploadclass.asp, line 149
.
questo e il codice che utilizzo
l'errore me lo da nel file incorporato
----------------------------------------
 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
if file1<>"" then
 ' 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("/images/progetti") & "\"
 Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
 oFSO.OpenTextFile(sPath & sFileName, nForWriting, True).Write sNewData
 dim icoup
 icoup= sfilename
end if
 'Set oFSO = Nothing
 'Set oFile = Nothing
 'Set oUpload = Nothing
if file2<>"" then
 ' grab the uploaded file data
 Set oUpload = New clsUpload
 Set oFile = oUpload("File2")
 ' 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("/images/progetti/imgA") & "\"
 Set oFSO2 = Server.CreateObject("Scripting.FileSystemObject")
 oFSO2.OpenTextFile(sPath & sFileName, nForWriting, True).Write sNewData
 dim imgA
 Imga = sfilename
end if
 Set oFSO2 = Nothing
 Set oFile = Nothing
 Set oUpload = Nothing
FILE INCORPORATO  - uploadclass.asp
----------------------------------------------
' ------------------------------------------------------------------------------
' 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 lnBoundaryBytes2
  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)
  lnBoundaryStart = InstrB(1, lnBytes, lnBoundaryBytes)
  ' Loop until the BoundaryBytes begin with "--"
  Do Until (lnBoundaryStart = InstrB(lnBytes, lnBoundaryBytes & 
CStrB("--")))
   ' All data within this boundary is stored within a local dictionary
   ' to be appended to the class-scope dictionary.
   ReDim Preserve oFields(nFieldCount)
   nFieldCount = nFieldCount + 1
   Set loField = New clsField
   lnDispositionPosition = InstrB(lnBoundaryStart, lnBytes, 
CStrB("Content-Disposition"))
   ' Get an object name
   lnStartPosition = InstrB(lnDispositionPosition, lnBytes, CStrB("name=")) 
+ 6
   lnEndPosition = InstrB(lnStartPosition, lnBytes, CStrB(""""))
   lsFieldName = CStrU(MidB(lnBytes, lnStartPosition, lnEndPosition - 
lnStartPosition))
   loField.FieldName = lsFieldName
   ' Get the location fo the file name.
   lnFileNamePosition = InstrB(lnBoundaryStart, lnBytes, CStrB("filename="))
   lnBoundaryEnd = InstrB(lnEndPosition, lnBytes, lnBoundaryBytes)
   'Test if object is a file
   If Not lnFileNamePosition = 0 And lnFileNamePosition < lnBoundaryEnd Then
    ' Parse Filename
    lnStartPosition = lnFileNamePosition + 10
    lnEndPosition =  InstrB(lnStartPosition, lnBytes, CStrB(""""))
    lsFileName = 
CStrU(MidB(lnBytes,lnStartPosition,lnEndPosition-lnStartPosition))
    loField.FileName = lsFileName
    ' Parse Content-Type
    lnStartPosition = InstrB(lnEndPosition,lnBytes,CStrB("Content-Type:")) + 
14
    lnEndPosition = InstrB(lnStartPosition,lnBytes,CStrB(vbCr))
    ContentType = 
CStrU(MidB(lnBytes,lnStartPosition,lnEndPosition-lnStartPosition))
    loField.ContentType = ContentType
    ' Parse Content
    lnStartPosition = lnEndPosition + 4
    lnEndPosition = InstrB(lnStartPosition,lnBytes,lnBoundaryBytes)-2
    Value = MidB(lnBytes,lnStartPosition,lnEndPosition-lnStartPosition)
    loField.BinaryData = Value & CStrB(vbNull)
    loField.Length = LenB(Value)
   Else
    ' Parse Content
    lnStartPosition = InstrB(lnDispositionPosition, lnBytes, CStrB(vbCr)) + 
4
    lnEndPosition = InstrB(lnStartPosition, lnBytes, lnBoundaryBytes) - 2
    Value = 
CStrU(MidB(lnBytes,lnStartPosition,lnEndPosition-lnStartPosition))
    loField.Value = Value
    loField.Length = Len(Value)
   End If
   Set oFields(UBound(oFields)) = loField
   'Loop to next object
   lnBoundaryStart = InstrB(lnBoundaryStart + LenB(lnBoundaryBytes), 
lnBytes, lnBoundaryBytes)
   Set loField = Nothing
  Loop
 End Sub
' ------------------------------------------------------------------------------
 Private Function CStrU(ByRef psByteString)
  Dim lnLength
  Dim lnPosition
  lnLength = LenB(psByteString)
  For lnPosition = 1 To lnLength
   CStrU = CStrU & Chr(AscB(MidB(psByteString, lnPosition, 1)))
  Next
 End Function
' ------------------------------------------------------------------------------
 Private Function CStrB(ByRef psUnicodeString)
  Dim lnLength
  Dim lnPosition
  lnLength = Len(psUnicodeString)
  For lnPosition = 1 To lnLength
   CStrB = CStrB & ChrB(AscB(Mid(psUnicodeString, lnPosition, 1)))
  Next
 End Function
' ------------------------------------------------------------------------------
End Class
' ------------------------------------------------------------------------------

 selezionare i file per upload
Che tipo di file stai cercando di trasferire? Il metodo
che hai usato consente di inviare solo file di testo.
Ciao.
Mauro