miércoles 14 de marzo de 2012

xelUpload por Carlos de la Orden Dijs 2001 - ASP

0 comentarios



http://www.aspfacil.com

Maneja ficheros subidos al servidor mediante código ASP

 ********************************************
    Este documento describe la clase de VBS xelUpload

    Ultima modificación: 6 Septiembre 2001
********************************************

INDICE

 I. XELUPLOAD
 II. PROPIEDADES Y METODOS
 III. EJEMPLOS
 IV. OBSERVACIONES
 V. PREGUNTAS MAS FRECUENTES

********************************************


I. XELUPLOAD

xelUpload es una solución para recibir controles de tipo FILE
desde ASP, y su único requerimiento es que la versión del
motor de script sea la 5.0 o superior, a partir de la cual
se pueden utilizar clases en VBScript.

El formulario HTML que envía el fichero (o los ficheros) debe incluir el
atributo ENCTYPE con el valor "multipart/form-data", así:

El funcionamiento es sencillo: se utiliza el método BinaryRead del objeto Request, leyendo todos los datos enviados (Request.TotalBytes) y se va recorriendo esta cadena, buscando las partes del formulario. En las siguientes direcciones: http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 http://www.ietf.org/rfc/rfc2388.txt se puede ver el formato de este flujo. II. PROPIEDADES Y METODOS Objeto xelUpload ---------------- * Propiedades: Form(campo) Devuelve el contenido del control del formulario de nombre "campo". * Métodos: Upload() Realiza el proceso de recepción del formulario y almacena los resultados. Es *imprescindible* llamar a este método antes de acceder a las demás propiedades o colecciones del objeto xelUpload. * Colecciones: Ficheros Alberga un objeto Fichero para cada fichero enviado con el formulario, con el nombre del campo en el formulario como clave. (ver más abajo) eltosForm Alberga el valor de cada campo enviado con el formulario, con el nombre del campo como clave. Objeto Fichero -------------- * Propiedades: Nombre Propiedad de sólo lectura que devuelve el nombre original del fichero, *sin* la ruta al archivo. Tamano Propiedad de sólo lectura que devuelve el tamaño en bytes del fichero. TipoContenido Propiedad de sólo lectura que devuelve el tipo de contenido asociado al fichero, si es reconocido por el servidor, o "application/octet-stream" si no lo es y son datos binarios. Datos Devuelve la cadena de bytes correspondiente al fichero. Si el fichero es una imagen GIF, por ejemplo, hacer: Response.ContentType = "image/gif" Response.BinaryWrite(objfichero.Datos) enviaría la imagen al navegador. * Métodos: Guardar (ruta) Salva el fichero con su nombre original en disco, en el directorio especificado en el argumento "ruta". Este argumento debe contener una ruta de directorio física, no virtual. GuardarComo (nombre, ruta) Salva el fichero, con el nombre "nombre" en el directorio ruta. El argumento "nombre" debe especificar la extensión del fichero, si se quiere guardar con extensión. GuardarBD (objField) Guarda los datos binarios en el objeto Field de ADO pasado como argumento. El objeto Field debe pertenecer a un objeto Recordset abierto, y creado con LockType apropiado, que permita modificarlo. Además debe corresponder a un campo en una tabla de la base de datos que permite guardar datos binarios grandes. (ver preguntas más frecuentes al final de este archivo) III. EJEMPLOS Suponemos el fichero xelupload.asp en el mismo directorio que la página ASP que se muestra de ejemplo, por lo que hacemos un #include normal. Página de envío: --------------- Nombre: Edad: Fichero:
Página recibir.asp ----------------- <% Dim objUpload, objFich, strNombreFichero Dim strNombre, strEdad 'Creamos el objeto set objUpload = new xelUpload 'Recibimos el formulario objUpload.Upload() 'Mostramos total de ficheros recibidos Response.Write ( objUpload.Ficheros.Count & " ficheros recibidos.") 'Mostramos los campos del formulario de texto: Response.Write ("Tu nombre es " & objUpload.Form("nombreusuario") & " ") Response.Write (" Tu edad es " & objUpload.Form("edad") & " ") 'Y ahora mostramos los datos del fichero enviado: 'Lo sacamos a una variable por comodidad set objFich = objUpload.Ficheros("fichero") Response.Write (" " & objFich.Nombre & " ") Response.Write("Tamaño: " & objFich.Tamano & " ") Response.Write("Tipo de contenido: " & objFich.TipoContenido & " ") 'Guardamos el fichero, con su nombre, en el directorio 'en el que se encuentra esta página objFich.Guardar(Server.MapPath(".")) 'Y guardamos una copia, con nombre "subido.bin" objFich.GuardarComo("subido.bin", Server.MapPath(".")) 'Abrimos una conexión a una base de datos Dim oConn, rs, SQL set oConn = Server.CreateObject("ADODB.Connection") set rs = Server.CreateObject("ADODB.Recordset") 'Nos conectamos con un DSN oConn.Open "DSN=Pruebas" 'Y abrimos la tabla Datos SQL = "SELECT * FROM Datos" 'Abrimos el Recordset con cerrojo 2 (adLockPessimiestic) 'que permite modificaciones rs.Open SQL, oConn, 0, 2 'Añadimos un nuevo registro rs.AddNew rs.Fields("nombre") = objUpload.Form("nombreusuario") rs.Fields("edad") = objUpload.Form("edad") 'Guardamos el contenido del fichero en la base de datos: 'el nombre del fichero, su tipo rs.Fields("nombrefichero") = objFich.Nombre rs.Fields("contenido") = objFich.TipoContenido 'y los datos binarios objFich.GuardarBD rs.Fields("datos") rs.Update rs.Close Response.Write("Fichero guardado en base de datos.") 'Limpiamos objetos set oFich = nothing set objUpload = nothing rs.Close set rs = nothing oConn.Close set oConn = nothing %> IV. OBSERVACIONES VBScript no ofrece mecanismos nativos para trabajar de forma eficiente con datos binarios, por lo que xelUpload puede ofrecer un rendimiento inferior al proporcionado por un componente compilado equivalente. No se ha comprobado un límite en el tamaño del fichero que puede manejar xelUpload. Mis pruebas han sido, como máximo, con ficheros de hasta 6,5 Mb. La gran ventaja de xelUpload es que permite incluir funcionalidades de envío de ficheros al servidor, sin necesidad de registrar ningún tipo de componente, lo que lo hace útil en multitud de escenarios. V. PREGUNTAS, DUDAS, PROBLEMAS 1) La propiedad Form o la colección Ficheros no funcionan. 2) ¿Qué tipo pongo a un campo de una tabla para poder guardar un fichero en la base de datos? 3) No puedo guardar el fichero en disco, recibo errores o no ocurre nada. -------------------------------------------------------------- 1) Antes de intentar acceder a obj.Form o obj.Ficheros (donde obj es el nombre de la variable que guarda la instancia de xelUpload) es IMPRESCINDIBLE llamar el método Upload() para comenzar el proceso. <% ... obj.Upload() Response.Write(obj.Ficheros.Count & " ficheros enviados.") ... %> 2) En Microsoft Access, tipo Objeto OLE, que puede guardar tanto datos binarios. En Microsoft SQL Server, tipo binary. 3) El objeto xelUpload no comprueba en forma alguna los permisos del directorio a la hora de Guardar o GuardarComo, así que asegúrate de que el directorio que escoges tiene permisos de escritura para el usuario (en el caso de un sitio Web público, es la cuenta IUSR_maquina). ***************************************************** (C) Carlos de la Orden Dijs 
5-6 Septiembre 2001
*****************************************************
Puedes redistribuir este fichero donde quieras y utilizarlo
como quieras, siempre y cuando se mantengan los
créditos originales y siempre y cuando no se publique
como propio en ningún medio electrónico o escrito.
No es mucho pedir ¿no? ;-)
¿Comentarios, quejas, felicitaciones? 
contacto@aspfacil.com
***************************************************** 

martes 30 de septiembre de 2008

La tasca de Xela

0 comentarios

Nuevo descubrimiento:
La Tasca de Xela

¡Genial!

jueves 26 de junio de 2008

DAO (Data Access Object)

0 comentarios

Manejo de Datos en Visual Basic

Los Objetos de acceso a datos (DAO) de Microsoft proporcionan los objetos, tal como tablas, consultas, relaciones, e índices, que controlan las tareas de administración de datos en una base de datos de Microsoft Access. Se puede compartir código de Visual Basic que utilice objetos de acceso a datos con otras aplicaciones que usan Microsoft DAO, como por ejemplo Microsoft Excel.

Referencia: Microsoft DAO 3.6 Object Library

Establecer la conexión con la Base de Datos:

Dim VARIABLE1 As Database
Set VARIABLE1 = OpenDatabase(“Estudiantes.mdb")

Si se va a trabajar con la Base de Datos activa se establece VARIABLE1 de la siguiente manera:

Set VARIABLE1 = CurrentDb()

La cláusula Set se debe usar OBLIGATORIAMENTE
para darle valor a las variables tipo Base de Datos

Cargar una tabla/consulta en memoria:

Dim VARIABLE2 As Recordset
Set VARIABLE2 = VARIABLE1.OpenRecordset(“Notas”)

Desactivar la conexión con la Base de Datos:

VARIABLE1.CLOSE ‘Quita la Base de Datos de la Memoria

Ejemplo:

Private Sub Form_Load()
Dim MiBase As Database
Set MiBase = OpenDatabase("C:\Data\Paises.mdb")

Dim MiTabla As Recordset
Set MiTabla = MiBase.OpenRecordset("pais")

MiTabla.MoveFirst
Do While Not MiTabla.EOF
Print MiTabla![pais], MiTabla![capital]
MiTabla.MoveNext
Loop
End Sub



  1. MÉTODOS PARA AGREGAR / ELIMINAR REGISTROS


    • NombreDeLaVariableRecordset.Edit
      Permite cambiar la información de un Registro en la Tabla
      Ejemplo: MiTabla.Edit

    • NombreDeLaVariableRecordset.Update
      Actualiza los cambios realizados con el método Edit

    • NombreDeLaVariableRecordset.AddNew
      Permite agregar un Nuevo Registro a la Tabla

    • NombreDeLaVariableRecordset.Delete
      Permite eliminar un registro de la Tabla


  2. MÉTODOS PARA DESPLAZARSE U OBTENER INFORMACIÓN


    • NombreDeLaVariableRecordset.RecordCount
      Cuenta el número de Registros de una Tabla

    • NombreDeLaVariableRecordset.MoveFirst
      Se desplaza al primer registro de la tabla

    • NombreDeLaVariableRecordset.MoveNext
      Se desplaza al siguiente registro de la tabla

    • NombreDeLaVariableRecordset.MovePrevious
      Se desplaza al registro anterior en la tabla

    • NombreDeLaVariableRecordset.MoveLast
      Se desplaza al último registro de la tabla


  3. CONTROLAR LA POSICION DEL APUNTADOR DE REGISTRO


    • NombreDeLaVariableRecordset.EOF
      Indica si se llegó al FINAL de la tabla o no.

    • NombreDeLaVariableRecordset.BOF
      Indica si se llegó al INICIO de la tabla o no.


  4. BUSCAR INFORMACIÓN


    • NombreDeLaVariableRecordset.FindFirst:
      Indica si se llegó al FINAL de la tabla o no.

    • NombreDeLaVariableRecordset.FindNext:
      Indica si se llegó al INICIO de la tabla o no.

    • NombreDeLaVariableRecordset.FindPrevious:
      Indica si se llegó al FINAL de la tabla o no.

    • NombreDeLaVariableRecordset.FindLast:
      Indica si se llegó al INICIO de la tabla o no.

    • NombreDeLaVariableRecordset.FindFirst “NombreCampo = " & Variable


    • NombreDeLaVariableRecordset.NoMatch:
      Indica si se encontró lo que se buscaba o no.


miércoles 25 de junio de 2008

Curso de programación con VBA - Access

0 comentarios

Excelente manual para descargar en PDF, de Eduardo Olaz.

Eduardo está galardonado con el Microsoft Most Valuable Professional en Access.

martes 18 de marzo de 2008

En un principio...

0 comentarios

Sacado de Vagabundia, uno de mis blogs preferidos.


1. Al principio Dios creo el Bit y el Byte. Y de ellos creo la Palabra. Y hubo dos bytes en una palabra; y nada mas existía. Y Dios separo el Uno del Cero; y vio que esto era bueno.

2. Y Dios dijo:
- Hágase el Dato.
Y así sucedió.

3. Y Dios dijo:
- Que los Datos vayan a su correspondiente lugar.
Y creó los disquetes, los discos duros y los discos compactos.

4. Y dijo Dios:
- Háganse los computadores, así habrá lugar para poner los disquetes, discos duros y compactos.
Y Dios creo los computadores y los llamó Hardware.

5. Y no había Software aún.
Pero Dios creo programas, chicos y grandes …
Y les dijo:
- Vayan y multiplíquense por si mismos y llenen toda la Memoria.

6. Y dijo Dios:
- Creare al Programador; y el Programador hará nuevos programas y gobernará sobre los computadores, programas y datos.

7. Y Dios creo al Programador y lo puso en el Centro de Datos.
Y Dios le mostró al Programador el Árbol de Directorios y le dijo:
- Puedes usar todos los volúmenes y subvolumenes, pero NO USES Windows.

8. Y Dios dijo:
- No es bueno para el Programador estar solo.
Y tomo un hueso del cuerpo del Programador y creo una criatura que buscaría al Programador, lo admiraría y amaría las cosas que hiciera el Programador.
Y Dios llamo a la criatura EL USUARIO.

9. Y el Programador y el Usuario fueron dejados por ÉL, solos bajo el DOS desnudo y esto fue bueno.

10. Pero Bill fue mas listo que todas las otras criaturas de Dios.
Y Bill le dijo al Usuario:
- ¿Realmente Dios te dijo que no ejecutaras ningún programa?

11. Y respondió el Usuario:
- Dios nos dijo que podíamos usar cualquier programa y cualquier dato pero nos dijo que no ejecutáramos Windows o moriríamos.

12. Y Bill dijo al Usuario:
- ¿Cómo puedes hablar sobre algo que no has probado? En el momento que corras Windows serás igual a Dios. Podrás crear cualquier cosa que desees con un simple click del ratón.

13. Y el Usuario vio que los frutos del Windows eran buenos y fáciles de usar. Y el Usuario vio que cualquier conocimiento era inútil, pues Windows podía reemplazarlos.

14. Así que el Usuario instalo Windows en su computador y le dijo al Programador que era bueno.

15. Y el Programador empezó a buscar nuevos drivers.
Y Dios le pregunto:
- ¿Qué buscas?
Y el Programador respondió:
- Busco nuevos drivers porque no puedo hallarlos en el DOS.
Y Dios dijo:
- ¿Quien te dijo que necesitabas drivers? ¿Ejecutaste Windows?
Y el Programador dijo:
- ¡Fue Bill quien nos lo dijo!

16. Y Dios dijo a Bill:
- Por lo que hiciste serás odiado por todas las criaturas.
Y el Usuario estará siempre descontento contigo.
Y siempre venderás Windows.

17. Y Dios dijo al Usuario
- Por lo que hiciste, Windows te decepcionara y se comerá todos tus recursos.
Y tendrás que usar programas piojosos.
Y siempre confiarás en la ayuda del Programador.

18. Y Dios dijo al Programador:
- Porque oíste al Usuario nunca serás feliz. Todos tus programas tendrán errores y tendrás que arreglarlos hasta el fin de los tiempos.

19. Y Dios los echo del Centro de Datos y cerro la puerta y la aseguró con un password.

20. FALLA DE PROTECCION GENERAL - Apriete Ctrl-Alt-Del

miércoles 27 de febrero de 2008

Saber la resolución de la pantalla en JavaScript

0 comentarios

Nuevamente de El Guille, este truco (código JavaScript):


var hz=window.screen.height
var wz=window.screen.width
document.write("La resolución de la pantalla es: ");
document.write(wz + “ de ancho x ”);
document.write(hz + “ de alto ”);

domingo 20 de enero de 2008

DAO con El Guille

1 comentarios

DAO