AspUpload

Valoración del artículo:
Presentamos un clásico componente ASP que permite a tus visitantes subir archivos a tu servidor.
Publicado: 05/4/02
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Muchos son los componentes ASP disponibles en el mercado, gratuitos o no, encargados de gestionar la transferencia de archivos por medio de un navegador hacia el servidor.

Referencia: Componentes de servidor en ASP.
Podéis encontrar una descripción de los componentes de ASP muy instructiva en DesarrolloWeb.com. Interesante de leer para todo aquel al que sea una novedad hablar de los componentes ASP en el servidor.

Este tipo de componentes añaden otro elemento de interacción con el usuario, quien sería capaz de enviar cualquier tipo de archivo a nuestro servidor. Este archivo podría a su vez ser abierto y mostrado al resto de los usuarios en tiempo real.

Una aplicación ejemplo donde podríamos usar este tipo de objetos sería un sitio web de chat donde, cada persona que entra, aporta si lo desea una foto suya que será visualizada por el resto de los interlocutores.

Gestionar esta o cualquier otra aplicación del estilo implica que haremos frente a toda una serie de situaciones que hay que solventar de la manera más sencilla:
  • No permitir la transferencia de archivos por encima de un determinado tamaño.
  • Controlar el tipo de extensión de los archivos que hay que colgar
  • Asegurarnos que los archivos puedan o no ser reescritos
  • Guardar parámetros como la anchura y altura de una imagen
  • ...
Como hemos dicho, existen multitud de componentes que pueden ayudarnos en esta tarea. Nosotros comentaremos aquí el que hemos utilizado en alguna ocasión: AspUpload de Persits Software.

AspUpload permite al servidor aceptar, guardar y manipular archivos que hayan sido enviados por un usuario a partir de un clásico formulario en HTML. El contenido de este formulario es enviado a un script que invoca a un objeto que es quien realmente se encarga de realizar todas las funciones necesarias para la toma y almacenamiento de los archivos.

Entre otras cosas, este objeto nos permite:

  • Limitar el tamaño del archivo a colgar.
  • Permitir o no el sobrescribir un archivo.
  • Controlar los atributos del archivo.
  • Mover, copiar, renombrar y borrar el archivo recibido.
  • Almacenar los archivos en bases de datos.
  • Guardar los archivos en memoria, no en el disco duro.
  • Nos informa sobre las dimensiones y tipo de archivo grafico colgado.
    A diferencia de otros componentes análogos, AspUpload no es freeware. La razón de que hayamos expuesto éste y no algún otro es simplemente, como ya hemos dicho, porque se trata del que ya hemos utilizado en alguna ocasión. Puede ser no obstante, que el servidor que utilices ya lo haya adquirido y que su utilización no te cueste nada. Una pequeña consulta a tu proveedor puede resolver esta duda. Si éste no es tu caso y deseas hacerte con un componente parecido pero gratuito no tienes mas que buscar en ASP In.

    En cualquier caso, este componente nos ha parecido bastante profesional y de un manejo fácil y completo. Altamente recomendable para este tipo de tareas.

    Además, el componente viene documentado de manera excelente en la página de la empresa que lo construye, con ejemplos rápidos y prácticos para ponerlo en marcha en un momento.

    Ejemplo rápido

    Para hacernos una idea básica sobre cómo se utiliza este componente vamos a realizar un ejemplo muy rápido y sencillo.

    A continuación podemos ver el código que podríamos utilizar para colocar un formulario en una página web con el que podríamos seleccionar algún archivo para subir al servidor.

    <HTML>
    <BODY BGCOLOR="#FFFFFF">

    <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="cargar.asp">
    <INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR>
    <INPUT TYPE=FILE SIZE=60 NAME="FILE2"><BR>
    <INPUT TYPE=FILE SIZE=60 NAME="FILE3"><BR>
    <INPUT TYPE=SUBMIT VALUE="Upload!">
    </FORM>

    </BODY>
    </HTML>


    Es importante colocar el atributo ENCTYPE="multipart/form-data" , que indica que se debe enviar el contenido del archivo y no exclusivamente el nombre.

    También podemos ver cómo sería el script que toma el archivo y lo guarda en el servidor. El archivo cargar.asp:

    <HTML>
    <BODY>

    <%
    Set Upload = Server.CreateObject("Persits.Upload.1")
    Count= Upload.Save("d:\xvrt\midominio.com\html\upload")
    %>
    <% = Count %> ficheros subidos.

    </BODY>
    </HTML>


    Lo único raro que hacemos es crear el componente en el servidor y asciarlo a la referencia "Upload", esto lo hacemos con Server.CreateObject. Posteriormente utilizamos el método save del objeto para guardar el archivo en el servidor.

    Recordamos nuevamente que en la página del componente podemos obtener la documentación entera, que está muy clara e interesante.

    Nota: PHP ya tiene la opción de upload de salida.
    Una de las ventajas de PHP es que este tipo de acciones se pueden realizar sin tener que instalar ningún componente especial, ya que el sistema de upload ya viene implementado en el propio lenguaje.
  • Comentarios
    Fueron enviados 6 comentarios al artículo
    2 comentarios no revisados
    4 comentarios revisados:
    Por: perrogrun
    18/5/04
    El directorio al que subes "d:xvrtmidominio.comhtmlupload" será sólo si trabajas con Arsys ( que es de donde está sacado el artículo ) porque podías especificar que para otros servidores hay que poner la ruta donde quieres que suba el archivo y además darle en el servidor permisos de escritura a la carpeta especificada.

    Haber si copiamos menos y explicamos más.

    RESPUESTA

    Gracias por tu comentario, y cierto, el ejemplo está probado en los servidores de Arsys. Pero hay que puntualizar que el código no está copiado, sino basado en la ayuda que propociona arsys a sus clientes.
    Por: ernesto Muñoz Trujillo
    01/9/05
    Tengo un problema y espero que me puedan ayudar.
    Tengo un servidor de Web y de archivos.
    El problema es que no puedo subir archivos de mas de 1 MB al servidor por conexion modem, ya que me marca "script timeout", ya aumentamos el tiempo de espera del servidor mas, pero no nos soluciono el problema.

    Mi pregunta es como puedo hacer para que el servidor me suba por lo menos 3 MB para clientes con conexion modem y que no me marque el error o como configurar un servidor de archivos en aspupload.
    Por: Kike
    05/10/06
    ¿Y qué pasa cuando aparece esto?

    Tipo de error:
    Objeto Server, ASP 0177 (0x800401F3)
    Cadena clase no válida
    Por: dekard
    06/11/06
    A mi me pasa lo mismo que a Kike.
    -El install de prueba no crea bien los directorios virtuales y tienes que arreglarlo.
    -Instalo la libreria con
    regsvr32 F:PersitsAspUploadBinaspupload.dll

    -Mensaje que todo instalado bien.

    -Doy los permisos necesarios tanto en las carpetas donde trabajo como en el editor de registro(es necesario en XP).

    Bueno, pues con todo y eso el puto objeto no funciona. Mensaje de asp error 0177. ¿Alguien podría ayudarme?.

    Gracias de antemano. dekard@brujula.net

    Manuales relacionados
    Categorias relacionadas
    El autor
    Rubén Alvarez
    Redactor de DesarrolloWeb.com
    http://www.desarrolloweb.com
    Lectura recomendada
    Compra este libro en Agapea, la librería urgente a domicilio.
    Últimas noticias
    Alojados en el grupo