
|
|

|
Versión para imprimir / Salvar en Favoritos
Subir ficheros al servidor mediante xelUpload (II)
Este es el código de nuestra página que recibe el formulario:
<%
'pagina.asp
%>
<!--#include file="xelupload.asp"-->
<%
Dim oConn, rs, SQL
Dim objUpload, objFich, strNombre, strEdad
Dim maxtam, strNombreFichero
'nuestro tamaño máximo
maxtam = 15 * 1024
set objUpload = new xelUpload
objUpload.Upload()
'recuperamos los campos usuario y edad
strNombre = objUpload.Form("usuario")
strEdad = objUpload.Form("edad")
'si no ha subido ningún fichero, le avisamos
if objUpload.Ficheros.Count = 0 then
Response.Write("¡No has subido ningún fichero!")
else
'accedemos al fichero por su nombre en el formulario
set objFich = objUpload.Ficheros("imagen")
if objFich.Tamano <= maxtam and objFich.TipoContenido = "image/gif" then
'Es el fichero correcto, vamos a guardarlo en todas partes. :-)
'Primero, en nuestro directorio actual con el nombre que tiene
objFich.Guardar Server.MapPath(".")
'Ahora, en el directorio upload, con la fecha de hoy como nombre
strNombreFichero = Day(Date) & Month(Date) & Year(Date)
objFich.GuardarComo strNombreFichero, Server.MapPath("upload")
'Ahora nos conectamos a una base de datos
set oConn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
'Nos conectamos con ODBC sin DSN, suponiendo que la base
'de datos está en este mismo directorio
oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" _
& "DBQ=" & Server.MapPath("usuarios.mdb")
SQL = "SELECT * FROM usuarios"
'Abrimos el Recordset: el 0 es el cursor adForwardOnly
' y el 2 es el cerrojo adLockPessimistic
rs.Open SQL, oConn, 0, 2
'Añadimos un nuevo registro
rs.AddNew
rs.Fields("Nombre") = strNombre
rs.Fields("Edad") = strEdad
rs.Fields("NombreFichero") = objFich.Nombre
'Llamamos a GuardarBD pasandole el campo correspondiente!!!
objFich.GuardarBD rs.Fields("Imagen")
'Guardamos el nuevo registro
rs.Update
'y limpiamos todo que vienen los padres
rs.Close
set rs = nothing
oConn.Close
set oConn = nothing
'¡Todo correcto!
Response.Write "Se ha añadido el nuevo usuario <b>" & strNombre & "</b>, " _
& "con el fichero " & objFich.Nombre & " de tamaño " & objFich.Tamano & "."
'Limpiamos nuestro xelUpload y el fichero
set oFich = nothing
set objUpload = nothing
else
'No era un fichero válido
Response.Write("No es un fichero aceptable. ")
Response.Write("Tiene que ser un fichero GIF de menos de 15k.")
end if
end if
%>
En este código véis todas las posibilidades que ofrece xelUpload. La tabla usuarios que utilizamos tiene esta estructura:
| Nombre del campo |
Tipo de datos |
| ID_Usuario |
Autonumérico |
| Nombre |
Texto |
| Edad |
Texto |
| NombreFichero |
Texto |
| Imagen |
Objeto OLE |
Como véis, Objeto OLE es el tipo que acepta datos binarios en Access. En SQL Server el equivalente es image, que es de tipo binario y acepta más de 8.000 bytes, o binary si guardamos menos de 8.000 bytes.
Observaciones, notas, etc
Hay una restricción importante del objeto Request, que hace imprescindible incluir el manejo de los campos normales de un formulario dentro del programa que maneje los ficheros subidos: que después de utilizar Request.BinaryRead no se puede utilizar Request.Form y viceversa. Así que tenéis que utilizar la propiedad Form de vuestro objeto xelUpload para leer los campos habituales de un formulario.
Si queréis ver el código, echadle un ojo al fichero xelupload.asp, está bastante comentado. En el ZIP incluyo otra página de prueba, form.html y una documentación decente en leeme.txt.
No me queda más que decir, que os bajéis -por fin- el fichero ZIP ahora mismo, lo probéis, y me digáis que os parece.
Un saludo,
Carlos de la Orden Dijs
Página anterior
Enlaces
Descargar xelupload.zip
La parte de la especificación HTML 4 dedicada a este tipo de formularios
Un RFC que también trata sobre el tema
|
>> ¿Quieres saber cuándo se publicarán nuevos artículos? ¡Suscríbete al Boletín de ASPFácil! <<
|
|
>> Comparte tus dudas y comentarios sobre este artículo en el foro Artículos de ASPFácil <<
|
(Arriba)
|