Hacer archivos desde el navegador es una forma simple de pasar archivos desde los clientes al servidor. Desde el tercer navegador de generación, NetScape y Microsoft, la mayoría de los navegadores pueden cargar archivos desde el servidor sin la necesidad de proporcionar a los usuarios métodos o software de acceso especial.
Algunos componentes ASP están diseñados para archivos, por ejemplo ::
Publicación del aceptador
(Parte de Microsoft Siteserver),
Aspsmartupload (Advantys),
Aspupload (PersistsSoftware),
SA-FileUpsoftware Artesantes)
El comienzo de este artículo le informará sobre la creación de tales componentes, y estos componentes generalmente usan VB, C ++ o Java.
El problema de estos componentes es que forman parte de los productos de tercera parte en lugar de ASP estándar. Como un componente de tercer partido, la instalación debe instalarse en el servidor. Esto significa que DLL debe copiarse y registrarse en el servidor. La mayoría de los sistemas de alojamiento no pueden realizar tales configuraciones en sus servidores porque pueden ocurrir problemas de configuración (especialmente hosts virtuales). La segunda desventaja es que la mayoría de ellos no son gratuitos.
Por lo tanto, necesito escribir el código VBScript para resolver el problema de cargar el archivo. Esta no es una opción inevitable, porque VBScript es un lenguaje de script, que solo puede usar el tipo de datos de variantes, y no puede proporcionar muchas funciones construidas en la gestión de datos binarios y matriz de bytes.
Para comprender el proceso de carga, primero debemos saber que los datos se envían desde el navegador al servidor con el protocolo HTTP. Esto significa que se envía el envío de formulario de "Data multipart/formulario" (datos múltiples/format).
Formulario de carga
En circunstancias normales, use el formulario HTML para pasar datos del navegador al servidor. Este formulario puede contener dominios de texto, cuadros de inspección, botones y control de tipo de archivo de archivos cargados. El usuario llena y envía esta tabla al servidor con sus propios datos.
El atributo Enableype en el elemento de tabla especifica el tipo de contenido codificado por el conjunto de datos de la tabla codificado al servidor. El valor predeterminado del atributo Enctype es "Application/X-WWW-form-Urlencoded", pero al transmitir una gran cantidad de texto al servidor, incluidos los datos con caracteres no ASCII o números binarios, este tipo predeterminado no puede ser competente. En este momento, el tipo de contenido "multipart/formulario" debe usarse cuando el archivo carga el formulario.
Una información de "Data de múltiples puntos" contiene una serie de componentes.
Un cabezal de disco de contenido, el valor de los "datos de formulario";
Para un control de tipo de archivo, una parte puede contener más información:
Los atributos de nombre de archivo (nombre de archivo) de la ruta original y el nombre del archivo se estipulan en el cliente;
Siga el contenido de control binario o de texto detrás de estas cabezas.
El siguiente ejemplo ilustra la codificación de "Data de múltiples puntos/forma".
Si se envía este formulario, puede leer estas solicitudes en el servidor:
----------------------------- 7CF87224D2020A
Disposición de contenido: formulario de forma = "Correo electrónico"
[Correo electrónico protegido]
----------------------------- 7CF87224D2020A
Contenido-Disposición: Forma-Data;
Tipo de contenido: Image/PJPEG
----------------------------- 7CF87224D2020A
Contenido-Disposición: Forma-Data;
Enviar consulta
----------------------------- 7CF87224D2020A--
Cuando ese contenido se transmite como respuesta al cliente, se mostrará. Request.binaryRead y Response.BinaryWrite Method Leer y escribir datos binarios.
< / Por ciento
Response.BinaryWrite (request.binaryRead (request.totalbytes))
%>
Puedes ver la división de cada parte de la respuesta:
----------------------------- 7CF87224D2020A
La última línea de límite sigue ' -'.
Cada control tiene una disposición de contenido. El reconocimiento de atributos de nombre está controlado por la tabla HTML (correo electrónico, blob e ingrese. Para un control de tipo de archivo (blob),
El nombre del archivo también es parte del encabezado de la pantalla principal, y el encabezado de tipo de contenido proporciona el tipo de contenido de datos binarios.
Script cargado
Todos los contenidos anteriores deben estar vinculados. Esto es muy obvio en VB o C ++ porque hay muchos objetos y métodos para esto. En VBScript, se deben utilizar algunas funciones proporcionadas por el idioma, y el problema de la cadena variable codificada de doble byte se debe resolver en VBScript.
Función VBScript
Los datos originales son un formato binario, por lo que se debe utilizar la función VBScript diseñada para administrar datos binarios. Debido a que consideramos los datos originales como cadenas de bytes, las funciones MIDB, INSTRB y LENB son útiles. Pero evite la cadena clásica de VBScript, porque son una cadena codificada dual -byte, que no es adecuada para descomponerse en bytes individuales.
Estas son las únicas funciones utilizadas para descomponer bytes en la función VBScript. También se requiere un método para obtener una cadena codificada de doble byte de los datos descompuestos para que pueda usar la cadena en la codificación VBScript. Para usar la cadena como una variable independiente en INSTR, se necesita una función para convertir la cadena dual -byte en una sola cadena de byte.
Para mí, escribí dos funciones, GetTring () y GetByTestring (), y luego lo expliqué más tarde.
estructura
Los datos descompuestos se almacenan en el objeto VBScript Dictionary. El objeto del diccionario es el objeto de tabla hash, que almacena (clave, elemento). Es parte de VBScript y ASP2.0.
Defina el primer objeto de diccionario "SubloadRequest". Este objeto contiene todos los controles enviados por la tabla de carga. La clave es el control del control, y el elemento es la información de control contenida en el objeto:
"ControlName1", Dictionary Control1
"ControlName2", Dictionary Control2
Representar un objeto de diccionario controlado contiene el siguiente par (clave, elemento):
"Valor", cadena o contenido binario
"Nombre de archivo", nombre del archivo cargado
"ContentType", ContentType de archivo cargado
Combinando estos, están los siguientes ejemplos:
uploadRequest: "correo electrónico", uploadControl 1: "valor", [correo electrónico protegido]
"blob", uploadControl 2: "nombre de archivo", c: /upload/200902/file.gif "contentType":
Imagen/GIF "Valor": GIF89AI?
Este objeto es muy útil para el acceso futuro y los datos de uso.
descomponer
Aquí está el código para la descomposición, la lectura y el control de carga de registros. Este proceso se completa con el programa "BuildUpLoAdRequest".
Sub BuildUploadRequest (requestbin)
En primer lugar, debe encontrar la línea divisoria.
'Obtenga el límite posbeg = 1 posend = instrb
bou
|||