Torna al Thread

Function UpLoad() Dim bytArray Dim bytecount bytecount = Request.TotalBytes if bytecount = 0 then UpLoad = 0 exit function end if ' continue only when bytecount>0 Set inputs = Server.CreateObject("Scripting.Dictionary") bytArray = Request.BinaryRead(bytecount) Dim objInput Dim adLongVarChar adLongVarChar = 201 Dim strByteToString Dim lngLoop Dim strIDInput Dim lngStartPos Dim lngFieldStartPos Dim strInputHeader Dim strContetType Dim strInputName Dim strFileName Dim strFilePath Dim strInputContent Dim isFile Dim rstTemp ' we using anrecordset object to quickly convert array of byte to string Set rstTemp = Server.CreateObject("ADODB.Recordset") rstTemp.Fields.Append "bytArray", adLongVarChar, lenb(bytArray) rstTemp.Open rstTemp.AddNew rstTemp.Fields("bytArray").AppendChunk bytArray rstTemp.Update ' we have getted the original string strByteToString = rstTemp("bytArray") Set rstTemp=Nothing lngStartPos = 1 ' get row separation strIDInput = Mid(strByteToString, 1, InStr(1, strByteToString, vbCrLf) - 1) ' for each input field While lngStartPos > 0 ' resets all input variables strInputHeader = "" strContetType = "" strInputContent = "" strInputName = "" strFileName = "" strFilePath = "" isFile = false ' skip row separation lngStartPos = lngStartPos + Len(strIDInput) + 2 ' gets current input header strInputHeader = Mid(strByteToString, lngStartPos, InStr(lngStartPos, strByteToString, vbCrLf) + 2 - lngStartPos) ' skip input header lngStartPos = lngStartPos + Len(strInputHeader) ' gets content type if any strContetType = Mid(strByteToString, lngStartPos, InStr(lngStartPos, strByteToString, vbCrLf) + 2 - lngStartPos) ' skip content type lngStartPos = lngStartPos + Len(strContetType) If Len(strContetType) > 2 Then lngStartPos = lngStartPos + 2 ' gets content input value strInputContent = Mid(strByteToString, lngStartPos, InStr(lngStartPos, strByteToString, strIDInput) - 2 - lngStartPos) ' skip content type lngStartPos = lngStartPos + Len(strInputContent) + 2 ' gets input header fields ' gets "name" field lngFieldStartPos = InStr(1, strInputHeader, "; name=", vbTextCompare) + 8 strInputName = Mid(strInputHeader, lngFieldStartPos, InStr(lngFieldStartPos, strInputHeader, Chr(34)) - lngFieldStartPos) lngFieldStartPos = 0 ' gets "filename" field if exists lngFieldStartPos = InStr(1, strInputHeader, "; filename=", vbTextCompare) If lngFieldStartPos > 0 Then lngFieldStartPos = lngFieldStartPos + 12 strFilePath = Mid(strInputHeader, lngFieldStartPos, InStr(lngFieldStartPos, strInputHeader, Chr(34)) - lngFieldStartPos) if len(strFilePath)>0 then strFileName = Mid(strFilePath, InStrRev(strFilePath, "\", Len(strFilePath)) + 1) strFilePath = Mid(strFilePath, 1, InStrRev(strFilePath, strFileName, Len(strFilePath)) - 1) end if End If lngFieldStartPos = 0 '*********************************** ' from this point we have all data If strFileName <> "" Then isFile = True else isFile = False end if ' create the input object with current values Set objInput = new clsInput objInput.name = strInputName objInput.isFile = isFile objInput.content = strInputContent objInput.size = len(strInputContent) objInput.fileName = strFileName objInput.filePath = strFilePath ' append just created input object to "inputs" collection Set inputs(strInputName) = objInput Set objInput = Nothing '*********************************** ' go to next input value lngStartPos = InStr(lngStartPos, strByteToString, strIDInput) ' check if input separator is the last If Mid(strByteToString, lngStartPos + Len(strIDInput) + 1, 1) = "-" Then lngStartPos = 0 Wend bytArray = "" UpLoad = bytecount End Function
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5