Buscamos expertos para solucionar problemas de servidores en asp
1. El archivo puede estar en uso: cargando, comprimiendo y empaquetando.
2. Es posible formar archivos de llamada de base de datos anidados e incluidos repetidamente en el código del programa.
Sube el código sin componentes, el que utilizas.
Subir.html
-
& lt! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transicional//ES " " | |
'====================== = ===================================
respuesta. p>Respuesta. ExpiresAbsolute = Now() - 1
Respuesta. Expires = 0
CacheControl = "Sin caché"
Respuesta AddHeader "Pragma", "Sin caché"
% & gt
& lthtml & gt
& lthead & gt
& ltmeta http-equiv = " Tipo de contenido " Contenido = " text/html; charset=gb2312" />
& lttitle & gtCarga de archivos
& lt/head & gt;
& ltbody & gt
& lt%
==================== ========= Definición==================
dim binData, textData, totalBytes
dim stream, file stream, stream
atenuar bCrLf, headMark
atenuar iStart, iEnd, iLen, iHead, iHeadEnd, iHeadLen
Cuerda de cabeza oscura
atenuar inicio de archivo, final de archivo, longitud del archivo
================================Inicialización=== ===== ===========
totalBytes =Solicitud.Número total de bytes
bCrLf = chrB(13)ChrB(10)' retorno Salto de línea de coche p>
textData=" "
Establecer fStream=servidor("ADODB.Stream")
Establecer fileStream=Servidor")
<. p>Establecer hStream=Server.CreateObject("ADODB. Stream")fStream.type=1
fStream. Mode=3
fileStream.type=1
Secuencia de archivos. Modo=3
hStream.type=1
hStream.mode=3
fStream.open
====== ======================Subfunción================
Función BinaryToString (biData, Tamaño)
Const adLongVarChar = 201
Establecer RS = CreateObject("ADODB. Recordset")
RS. campo.
Agregue "mBinary", adLongVarChar, Size
RS. Abrir
RS. Añadir nuevo
RS("mBinary "). AppendChunk(biData)
RS. Actualizar
BinaryToString = RS("mBinary "). Valor
RS. Cerrar
Finalizar función
Función saveBinFile(nombre de archivo, posición, longitud)
FileStream.open
fStream. posición = posición
fStream. Copiar a secuencia de archivos, longitud
Secuencia de archivos. Servidor SaveToFile. MapPath (nombre de archivo), 2
Secuencia de archivos. cerrar
response.write "<br><strong>¡Carga completada!</strong><br>;
Respuesta. Write( "& ltbr & gtFile se ha subido a "& server.MapPath(nombre de archivo)" .& ltbr >;)
Función final
La función BtoS(Binario)' convierte datos de bytes en cadena (no puede contener chino).
Atenuar I,S
Para I = 1 a LenB (binario)
S = S&P. Chr(AscB(MidB(Binary, I, 1)))
Entonces
BtoS = S
Fin de función
Analizar binario Transmita, extraiga datos útiles y guárdelos.
Flujo de análisis de funciones (binData)
Respuesta. Write ("<br><strong>Parse Bindata</strong><br>)
Headmark = midb (bindata1, instrb (1, bintatabcrlf)-1)' para obtener el encabezado de verificación.
write(" <br>CRC:"&header&<br>)
iStart=1
iHeadStart =iStart
iEnd=1
Chatea mientras haces & ltTotal número de bytes
iHeadEnd =InStrB(iStart+1, binData, bCrLf & ampbCrLf)
iEnd=InStrB(iStart+1, binData, headMark)
Si iEnd=0, entonces
iEnd = número total de bytes + 1
Respuesta. Write("<br>Análisis completado!<br>;)
Otro
iHeadLen = iHeadEnd-iHeadStart-1
iLen=iEnd-iStart- 1
'=========================================== == p>
hStream.open
fStream.position=iHeadStart
fStream, iHeadLen
hStream. hStream.type=2
hStream.="gb2312 "
headString=hStream.readText
Respuesta.
write("<br>title:"&headstring)
hStream.close
hStream.type=1
Atenuar el inicio del nombre del archivo, el final del nombre del archivo, el formato del archivo, la posición del punto
fileNameStart=InStr(1, headString, " filename=")
Respuesta. Escribir ("& ltbr & gthead len: "& amp; len(head string))
Respuesta. Escribir (" & ltbr & gtfilename start: " & amp; filename start)
Si el nombre del archivo comienza & gt "0 entonces" indica que el segmento binario actualmente analizado es un archivo.
Obtener formato de archivo
Respuesta. Write (" & ltbr & gt es el archivo, sí. & ltbr >;)
nombre de archivo final = InStr(nombre de archivo inicio+1, headString, vbNewline)
puntoPos = InStr ( nombre de archivo inicio+1, headString, " ")
fileFormat=Mid(headString, dotPos, fileNameEnd-dotPos-1)
Respuesta (" & ltbr & gt format: "&Formato de archivo& "<br>;)
Guarde el archivo de la siguiente manera
fileStart=iHeadEnd+3
fileEnd=iEnd
fileLen = fileEnd- fileStart-1
Podemos generar dinámicamente el nombre del archivo aquí y guardarlo de la siguiente manera.
saveBinFile "Alay "FileFormat, fileStart, fileLen 'Guarda automáticamente el archivo en el formato correcto con el nombre de archivo Alay.
Terminará si...
Terminará si...
iStart=iEnd+1
iHeadStart=iStart
Anillo
Fin de función
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
binData = Solicitud. Lectura binaria (bytes totales)
fStream. Escribe binData
datos de texto = binario tostring(binData, totalBytes)
Respuesta. write("<br><strong>writebefore:</strong><br><pre>"&text data&"</pre><br>)
Analizar flujo (vincular datos)
% & gt
& lt/body & gt;
& lt/html & gt;
Estarás bien una vez que hayas terminado