uno. Análisis del principio de implementación de la carga de archivos basado en ASP
El principio básico es: use el método BinaryRead del objeto ADO Stream para leer todos los datos en el formulario, interceptar los datos del archivo requeridos y guardarlo en archivos binarios.
Aquí hay un ejemplo de la página del archivo de carga (upload.htm):
< html >< corporal >< form de nombre = "upload" método = "post" enctype = "multipart/form-data" Action = "upload.asp"> < Entrada tipo = "file" name = "nombre de archivo"> < type de entrada = "enviar" valor = "< </td> </form> </body> </html>
El objeto de archivo se usa en el programa, de modo que los datos originales leídos mediante el método BinaryRead en upload.asp no son solo los datos del archivo seleccionado en sí, sino que también contienen descripciones de la ruta, tipo, nombre de dominio de la página de envío y otra información relacionada en el disco duro del usuario. De esta manera, necesitamos extraer el contenido específico del archivo de él. Según el análisis, la línea divisoria entre la información del encabezado de los datos y los datos es de dos pares de roturas de la línea de retorno del carro, y también hay información de separación al final. Podemos usar un método similar para obtener datos de archivo.
Dim formData.FormSize, DataStart, CLSTR, DivStrformSize = request.totalByTesFormData = request.binaryRead (FormSize) Clstr = CHRB (13) & CHRB (10) DATASTART = INSTRB (FORMDATA.CLSTR Y CLSTR)+4'4 son dos la longitud de la longitud de retorno de la línea de retorno de la línea de retorno DivStr = LeftB (FormData, InstrB (FormData, CLSTR) -1) DataSize = instrb (DataStart+1, FormData, DivStr) -Datastart-2FormData = MidB (FormData, DataStart, DataSize) FormData es el contenido del archivo.
El tratamiento correspondiente se puede realizar según sea necesario en el medio. El trabajo final es guardar el archivo. Hay dos formas de guardar: una es usar métodos de operación de archivos binarios en programas como VB o VC, agregar bibliotecas de tipo apropiadas al proyecto y finalmente compilarlo en un archivo DLL y registrar el archivo DLL cuando lo use. El programa de almacenamiento de archivos es el siguiente:
Función pública saveFile (pathname as string) como string dim objContext como objectContext dim objRequest como solicitud Establecer objContext = getObjectContext () set objrequest = objContext ("request") La siguiente pieza de código es una operación relacionada para el almacenamiento de archivo dim formeData () como byte, clstR, divtr dim aTSteTart por mucho tiempo, dataS de larga data de largo. DataSize = objRequest.totalBytes redim formdata (dataSize-1) formData = objRequest.binaryRead (dataSize) clstr = chrb (13) & chrb (10) dataStart = InstrB (FormData, CLSTR & CLSTR) +4 Divstr = Leftb (FormData, InstrB (FormData, CLSTR) -1) DataSize = InstrB (DataStart+1, FormData, DivStr) -DatASTART-2 FormData = MidB (FormData, DataStart, DataSize) 'Cree un archivo binario y escriba FormData para abrir PathName para Binary como 1 Put #1, FormData Close #1 SaveFile = "OK!" Función finalEl segundo método es utilizar el método de operación de archivo binario proporcionado en la transmisión ADO para completarlo. La declaración para guardar el archivo es: streamobj.savetofile (nombre de archivo, 2). En este tipo de operación, podemos almacenar las operaciones relevantes en un archivo de clase. Al aplicar, solo incluya el archivo de clase en el programa ASP. Para obtener métodos de procesamiento específicos, consulte la introducción relevante.