Red de conocimiento informático - Material del sitio web - Variaciones en el nombre de dominio

Variaciones en el nombre de dominio

Se necesita mucho tiempo para escribir aplicaciones de sitios web utilizando ASP e inevitablemente encontrará varios problemas. El problema más común probablemente sea cómo cargar archivos al servidor, especialmente imágenes. Por ejemplo, si desea implementar la función "un día a la semana" proporcionada por NetEase Virtual Community en su propia comunidad, debe proporcionar a los usuarios la función de cargar fotos. Podemos usar varios componentes de carga de archivos gratuitos para cargar archivos de imágenes al servidor. Las funciones son muy poderosas, pero en muchos casos solo podemos usar espacio de soporte ASP gratuito o alquilar el espacio virtual de otras personas. En el primer caso no nos es posible utilizar el componente de carga de archivos. En cuanto al segundo caso, tenemos que pagar mucho dinero. A menos que tenga su propio host virtual, puede instalar los componentes que necesita en el servidor a voluntad, algo que la gente común no puede hacer. ¿Entonces no hay nada que podamos hacer? Jaja, la respuesta es sí (claro, de lo contrario no podría escribir este artículo). Usamos código ASP puro para cargar imágenes y guardarlas en la base de datos (por cierto, también podemos mostrar imágenes en la base de datos en la página web).

Primero, familiaricémonos con los métodos de objeto que usaremos. Generalmente usamos el objeto de solicitud para obtener los datos pasados ​​​​de la página anterior. De manera similar, también podemos usar el objeto Solicitud para obtener datos del archivo cargado usando el método Solicitud. Lectura binaria(). Queremos leer los datos de la imagen de la base de datos y mostrarlos en la página web mediante el siguiente método:

Solicitar. BinaryWrite (). Cuando obtenemos los datos de la imagen y queremos guardarlos en la base de datos, no podemos usar la instrucción Insertar para operar directamente la base de datos, sino usar el método AppendChunk de ADO. De manera similar, deberíamos usar el método GetChunk para leer los datos de la imagen en la base de datos. La sintaxis específica de cada método es la siguiente:

*Solicitud. Sintaxis de lectura binaria:

Variant=request. Lectura binaria (recuento)

Parámetros

Diferentes

El valor de retorno contiene los datos leídos del cliente.

Count

Indica la cantidad de datos a leer del cliente que es menor o igual a la cantidad de datos obtenidos mediante el método Request.TotalBytes.

*Solicitar. Sintaxis de escritura binaria:

Solicitud. BinaryWritedata

Parámetros

Datos

El paquete de datos que se escribirá en el navegador del cliente.

*Solicitar. Sintaxis de TotalBytes:

Variante = solicitud. Bytes totales

Parámetros

Diferentes

Devuelve el número de bytes de datos leídos del cliente.

*Sintaxis de AppendChunk

Agrega datos a texto grande, campos de datos binarios u objetos de parámetros.

Objeto. AppendChunkData

Parámetros

Campos de objeto u objetos de parámetro

Variables de datos que contienen datos agregados al objeto.

Explicación

Utilice el método AppendChunk del objeto Campo o Parámetro para convertir un número binario largo o un número de carácter.

Muestra los objetos rellenos. Cuando su sistema tiene memoria limitada, puede usar el método AppendChunk para realizar algunas operaciones con valores largos, pero no todas las operaciones.

*Sintaxis GetChunk

Devuelve todo o parte del contenido de un objeto de campo de datos binarios o de texto grande.

Variable = campo. GetChunk(tamaño)

Valor de retorno

Volver a la transformación.

Parámetros

Tamaño de la expresión entera larga, igual al número de bytes o caracteres a recuperar.

Explicación

Utilice el método GetChunk del objeto Field para recuperar algunos o todos sus datos binarios o de caracteres largos.

Cuando el sistema tiene memoria limitada, el método GetChunk se puede utilizar para manejar algunos valores largos, pero no todos los valores largos.

Los datos devueltos por la llamada GetChunk se asignarán a la "variable". Si el tamaño es mayor que los datos restantes,

GetChunk solo devuelve los datos restantes y no llena la "variable" con espacios. Si el campo está vacío, el método GetChunk devuelve Null.

Cada llamada subsiguiente a GetChunk recuperará datos desde donde terminó la llamada anterior a GetChunk. Sin embargo, si recupera datos de un campo y luego establece o lee el valor de otro campo en el registro actual, ADO pensará que los datos se recuperaron del primer campo. Si se vuelve a llamar al método GetChunk en el primer campo, ADO interpretará la llamada como una nueva operación GetChunk y comenzará a leer desde el principio del registro. Si el otro objeto de conjunto de registros no es una copia del primer objeto de conjunto de registros, acceder a sus campos no interrumpirá la operación GetChunk.

Si el bit adFldLong en la propiedad Atributos del objeto Campo está establecido en Verdadero, puede usar el método GetChunk en el campo.

Si no hay ningún registro actual al utilizar el método Getchunk en un objeto Field, se generará el error 3021.

A continuación, diseñaremos nuestra base de datos. Como prueba, nuestra estructura de base de datos es la siguiente (access2000):

Descripción del tipo de nombre de campo

Valor de clave primaria de numeración automática de ID

Se utiliza el objeto OLE Img para almacenar datos de imágenes.

Para MSSQLServer7, la estructura correspondiente es la siguiente:

Descripción del tipo de nombre de campo

Valor de clave primaria Id int (Identidad)

Imagen img Se utiliza para guardar datos de imagen.

Ahora hemos escrito oficialmente nuestra parte de carga de código ASP puro. Primero, proporcionamos a los usuarios una interfaz de carga que les permite seleccionar imágenes para cargar. El código es el siguiente

(upload.htm):

lthtml gt

ltbody gt

ltcenter gt

ltform nombre = " formulario principal " enctype = " multipart/form-data " acción = " proceso . ASP " método = post gt;

ltinputtype = nombre de archivo = mefile gt ltbr gt

tipo de entrada = nombre de envío = valor OK = " OK " gt;

lt/form gt

lt/center gt; gt;

lt/html gt;

Nota enctype="multipart/Form-data". Este atributo debe estar presente en el formulario, de lo contrario no se obtendrán los datos cargados. A continuación, debemos procesar los datos obtenidos del navegador de Process.asp, porque los datos obtenidos en Process.asp no solo contienen los datos que queremos cargar en la imagen, sino que también contienen otra información inútil. Necesitamos eliminar datos redundantes y guardar los datos de la imagen procesada en la base de datos. Aquí tomamos access2000 como ejemplo.

El código específico es el siguiente (process.asp):

lt

response.buffer=true

formsize=request.totalbytes

formdata = solicitud. lectura binaria(tamaño del formulario)

bncrlf=chrB(13)chrB(10)

divider=leftB(formdata, clng(instrb(formdata, bncrlf))- 1)

datastart=instrb(formdata, bncrlf ampbncrlf) 4

dataend = instrb(datos inicio 1, formdata, divisor)-datastart

mydata=midb (formdata, datastart, dataend)

setconnGraph=servidor. CreateObject("ADODB.connection ")

Diagrama de conexión. ConnectionString = " controlador = { controlador de acceso de Microsoft (*.MDB)}; DBQ = " & servidor. MapPath("images.MDB") & "uid=pwd="

Mapa de conexión. Abrir

setrec = server . createobject(" adodb . recordset ")

Recomendado. Abra "SELECCIONAR * DE [imágenes] donde es nulo", connGraph, 1, 3

rec.addnew

rec("img "). appendchunkmydata

Recomendar actualización

Registro cerrado

setrec=Ninguno

setconnGraph=Ninguno

gt

Bien, ahora hemos guardado las imágenes cargadas en una base de datos llamada imágenes.mdb. El trabajo restante es mostrar los datos de la imagen en la base de datos en la página web. Generalmente, en HTML, las imágenes usan

ltIMGSRC="showimg.asp?id = xxx " gt

Entonces, lo que tenemos que hacer es leer de la base de datos de showimg.asp Elegible .

Datos y devuelve el atributo SRC. El código específico es el siguiente (showimg.asp):

lt

setconnGraph=server. CreateObject("ADODB.connection ")

Diagrama de conexión. ConnectionString = " controlador = {controlador de acceso de Microsoft (*.MDB)}; DBQ = " amp;

Servidor. MapPath("images.MDB") & "uid=pwd="

Mapa de conexión.

open

setrec = server . createobject(" adodb . recordset ")

strsql = " selectimgfroimageswhereid = " & trim(request(" id "))

Esquema de conexiones, 1, 1

Respuesta. ContentType="image/* "

Respuesta. BinaryWriterec("img"). getChunk(7500000)

Registro cerrado

setrec=Ninguno

setconnGraph=Ninguno

gt

Tenga en cuenta , debe especificar la respuesta. ContentType="image/* "Luego envíelo al navegador.

Para poder visualizar la pantalla con normalidad.

Lo último a tener en cuenta es que el procesamiento en mi procesamiento no considera otros datos en la primera página (upload.htm), como