Ayude a ASP a resolver problemas
dim Data_5xsoft
Curso upload_5xsoft
forma de objeto tenue, archivo de objeto, versión
Formulario de función pública
p>strForm=lcase(strForm)
Si no es objForm.exists(strForm), entonces
Form = " "
Otro< /p >
Form=objForm(strForm)
Terminará si...
Finalizar función
Archivo de función pública (strFile) p>
strFile=lcase(strFile)
Si no es objFile.exists(strFile), entonces
Establecer archivo = nueva información del archivo
Otros
set File=objFile(strFile)
Terminará si...
Finalizar función
Subclase privada_Initialize
dim Solicitar datos, sStart, vbCrlf, sInfo, iInfoStart, iInfoEnd, tStream, iStart, archivo
dim iFileSize, sFilePath, sFileType, sFormvalue, sFileName
dim iFindStart, iFindEnd
atenuar iFormStart, iFormEnd, sFormName
establecer objForm=Servidor. CreateObject("Script.Dictionary》)
Establezca objFile=Server.CreateObject("Script.Dictionary》)
Si es necesario. TotalBytes & lt1 luego sale del conector
Establezca tStream = Server. CreateObject("adodb.stream ")
set Data_5xsoft = Servidor. CreateObject("adodb.stream ")
Data_5xsoft. Tipo = 1
Data_5xsoft. modo=3
Data_5xsoft. Abra
Data_5xsoft. Escribe una solicitud. BinaryRead(request.totalbytes)
Data_5xsoft. Ubicación=0
RequestData=Data_5xsoft. Leer
iFormStart = 1
IFormEnd = LenB(RequestData)' Esta es la longitud de toda la información enviada y donde termina la información.
vbCrlf = chrB(13)chrB(10)
Sstart = MIDB (RequestData, 1, instrb (Iformstart, RequestData, VBCRLF)-1)'Cada elemento del formulario comienza anteriormente allí era un identificador de inicio.
Form:Content-Disposition:Form-data; Name= "Nombre del elemento del formulario"; Filename= "Ruta completa para cargar el archivo local" CHR(13)CHR(10)Content-type:text/ simple CHR(13)CHR(10)CHR(13).
Si no es un archivo, se ve así: Content-Disposition: Form-Data; Name= "Nombre del elemento del formulario" CHR(13)CHR(10)CHR(13)CHR(10) )Del elemento de formulario El valor pasado por CHR(13)CHR(10).
Tenga en cuenta que CHR(13) representa el retorno de carro y CHR(10) representa el avance de línea; esto devolverá el contenido del identificador inicial fijo.
ISart = LenB (sStart)'La longitud del identificador de inicio.
iform start = iform start+istart+1 'La posición inicial del elemento del formulario.
while(iFormStart+10)<' IFormEnd 'Porque al final de los datos, no está el identificador de inicio, sino el identificador de fin"-7d 61773720616-chr(654438.
iInfoEnd = InStrB(iFormStart, RequestData, vbCrlf & ampVbCrlf)+3 'Encuentra la posición final de la parte de descripción del elemento del formulario
tStream.
Mode=3. /p>
tStream.
Data _ 5xsoft. Establezca la posición inicial al principio de la sección de descripción del elemento del formulario. mstart 'Escribe temporalmente la parte de descripción del elemento de formulario en tStream en formato binario
tStream. Position = 0
tStream. >
SInfo = tStream. "ReadText" escribe información en forma de texto en la variable sinfo
Obtiene el nombre del elemento del formulario
Iformstart = instrb (iinfoend, requestdata, sstart) 'Encuentra la posición binaria inicial del separador del siguiente elemento del formulario, que se usará más adelante p>
Ifindstart = instr (22, sinfo, " name = ", 1)+6 'Formulario - los datos. descrito por el elemento de formulario; comience a ubicar la posición inicial de nombre = ", que es el número de caracteres. Luego ubique nombre = "Después, el parámetro "1" representa la comparación en forma de texto.
Ifindend = instr (ifinstart, sinfo, """, 1) 'coloca el siguiente "número, de modo que la parte entre ellos sea el valor del atributo form nane
S formname = lcase (mid (sinfo. , ifindstart, ifindstart))' ¡Mira! Obtener
Si es un archivo InStr (45, sInfo, " filename = " ", 1)> entonces 0
Establecer archivo =. new fileinfo' La clase fileinfo se define más adelante.
Obtener el nombre del archivo
iFindStart = InStr(iFindEnd, sInfo, " filename = " ", 1) + 10
iFindEnd = InStr(iFindStart, sInfo, """", 1)
sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
Archivo. NombreDeArchivo=getNombreDeArchivo(sNombreDeArchivo)
Archivo.
FilePath=getFilePath(sFileName)
Archivo. FileExt=getFileExt(sFileName)
Obtener tipo de documento
Ifindstart = instr (ifinend, sinfo, "content-type:", 1)+14 'Compruébalo tú mismo.
Ifindend = instr (ifindstart, sinfo, vbCr)' vbcr representa el retorno de carro. ¿No es la posición inicial de CHR(13)CHR(10) la posición inicial de vbCr?
Archivo. FileType =Mid (sinfo, iFindStart, iFindEnd-iFindStart)
Obtener datos del archivo
Archivo. FileStart =iInfoEnd 'La ubicación donde comienzan los datos reales del archivo.
Archivo. ' tamaño de archivo = iFormStart-iinfo end-3 'Aquí se utiliza el iFormStart anterior, el frente son los datos reales de este elemento de formulario y el reverso es la parte del siguiente elemento de formulario. ¿Por qué restar 3 para obtener la longitud del archivo?
Archivo. FormName=sFormName
Si no es objFile. Si (sFormName) existe, entonces
' ObjFile.add sFormName, theFile 'Agrega el objeto Archivo de la clase FileInfo al diccionario ObjFile, cuya clave es el atributo Nombre del elemento de formulario.
Terminará si...
Otro
Si es un elemento de formulario.
tTransmitir. Escriba =1
tStream. Modo=3
tStream. Abra
Data_5xsoft. Posición = iInfoEnd 'La posición inicial de los datos reales del elemento del formulario.
Datos_5xsoft. copiar a tStream, iformstart-iinfo end-3 'Copia temporalmente los datos reales a tStream.
tTransmitir. Posición = 0
tStream. Tipo = 2
TStream. Charset ="gb2312 " 'Convertir a texto.
sFormvalue = tStream. 'Leer texto'
tStream. Cerrar
si objForm. existe(sFormName) entonces
obj form(s formname) = obj form(s formname)&","&sFormvalue
Otro
objForm. Agregue sFormName, sFormvalue
Terminará si...
Terminará si...
iform start = iform start+istart+1 'Obtener el siguiente elemento del formulario La posición inicial de la parte de descripción, iniciando así el siguiente ciclo.
Fila
RequestData= " "
Establecer tStream =nada
Conector final
Subclase privada_Terminación
Si se solicita. TotalBytes & gt luego 0
objForm. Eliminar todos
objFile. Eliminar todo
set objForm=nada
set objFile=nada
Data_5xsoft.
Cerrar
establecer datos _ 5xsoft = Ninguno
Terminará si...
Finalizar conector
Función privada GetFilePath(FullPath)
p>Si FullPath & lt& gt" "Entonces
GetFilePath = left(FullPath, InStrRev(FullPath, " \ "))
Otro
GetFilePath = " "
Terminará si...
Finalizar función
Función privada GetFileName (ruta completa)
Si FullPath & lt& gt" "Entonces
GetFileName = mid(FullPath, InStrRev(FullPath, " \")+1)
Otro
GetFileName = " "
Terminará si...
Función final
Función privada GetFileExt (ruta completa)
Si FullPath & lt& gt""Entonces
GetFileExt = mid(FullPath, InStrRev(FullPath, " "))
Otro
GetFileExt = " "
Terminará si...
Finalizar función
Finalizar clase
Clase FileInfo
nombre de formato tenue, nombre de archivo, ruta del archivo, tamaño del archivo, tipo de archivo, inicio del archivo, extensión del archivo
Subclase privada_Initialize
Nombre del archivo = " "
Ruta del archivo = " "
Tamaño de archivo = 0
Inicio de archivo= 0
FormName = " "
FileType= " "
FileExt= " "
Conector final
Función pública Guardar como (ruta completa)
dim dr, ErrorChar, I
Guardar como=true
Salga de la función si trim(fullpath)=" " o FileStart=0 o FileName=" " o right(fullpath, 1)="/"
set dr=CreateObject(" Adodb.Stream" )
Modo Doctor=3
dr.Type=1
Abrir Doctor
Data_5xsoft.position=FileStart
Data_5xsoft.copyto recuperación ante desastres, tamaño del archivo
Dr guardar ruta completa del archivo, 2
Dr Cross
Establecer dr = Ninguno
SaveAs=false
Finalizar función
Finalizar clase
% & gt
Lo guardas como carga. inc, luego escribe