Blog sobre programación, tecnología, humor y un poco más…
Nov
07
08

Subir archivos al servidor

Por: DarkPaladin

Para subir archivos al servidor solo necesitas un formulario y un poco de php.

Primero el codigo del formulario es:

HTML:
  1. <form action="<?php echo "<?=$"."PHP_SELF?>"; ?>" method="post" enctype="multipart/form-data" name="form1">
  2. <align="center">Archivo
  3. <input name="archivo" type="file" id="archivo">
  4. </p>
  5. <input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="300000">
  6. <input name="send" type="hidden" id="send" value="1">
  7. <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
  8. </form>

Es muy importante incluir los campos en negrita. En el campo action se indica el archivo php con el que se trataran los datos, en este caso sera este mismo archivo. Enctype es el tipo de codificacion que tendran los datos y multipart/form-data le indica que es un archivo.

Para seleccionar un archivo necesitamos un campo de archivo ( type="file"). Esto nos permitira seleccionar archivos de nuestra computadora.

El campo oculto llamado MAX_FILE_SIZE limita el tamaño del archivoque se desea subir, si éste es mayor, se ignora; aqui la etiqueta value indica el tamaño limite del archivo en bytes.

Yo suelo incluir un campo oculto con un valor fijo para verificar que se enviaron los datos. Aqui su nombre sera send

Ahora solo falta incluir el boton para enviar (type="submit")

Entonces comenzara el trabajo del php.

PHP:
  1. //Verificamos si se enviaron los datos
  2. if ($send){
  3. //Ahora verificamos que el archivoha sido completamente copiado al servidor
  4. // $HTTP_POST_FILES['archivo']['tmp_name'] es el nombre temporal que tomo el archivo en el servidor, en archivo deberas poner el nombre que le pusiste al campo tipo archivo
  5. if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
  6. //si se subio el archivo, entonces ahora lo movemos a una ruta especifica, esta ruta sera relativa.
  7. move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], "RUTA");
  8. }
  9. }

Esto deberia subir el archivo a tu servidor, pero puedes limitar la subida a un cierto tipo de archivo, por ejemplo imagenes. La variable $HTTP_POST_FILES['archivo']['type'] contiene el tipo del archivo que se ha enviado, esto devolvera un mimetype, por ejemplo devolvera "image/jpeg" si el archivo es una imagen jpg. Pero para no limitar a un solo tipo de imagen, haremos un explode a esta variable:

PHP:
  1. $tipo= explode("/",$HTTP_POST_FILES['archivo']['type']);

Esto devolvera un array de 2 variables: $tipo[0] sera el tipo de aplicacion del archivo como imagen, video; $tipo[1] sera el tipo del archivo como jpeg, png, mp3.

Ahora el codigo para limitar la subida a archivos de imagenes sera:

PHP:
  1. <form action="<?php echo "<?=$"."PHP_SELF?>"; ?>" method="post" enctype="multipart/form-data" name="form1">
  2. <p align="center">Archivo
  3. <input name="archivo" type="file" id="archivo">
  4. </p>
  5. <input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="300000">
  6. <input name="send" type="hidden" id="send" value="1">
  7. <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
  8. </form>
  9. <?php echo "<?php"; ?> if ($send){
  10. if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])){
  11. $tipo= explode("/",$HTTP_POST_FILES['archivo']['type']);
  12. if ($tipo[0] = "image"){
  13. move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], "RUTA");
  14. }
  15. else
  16. {
  17. echo "No es una imagen";
  18. }
  19. }
  20. }
  21. ?>

Valid XHTML 1.0 Strict

Trackback URI | Comentarios RSS

Deja tu comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Diseño completamente por DarkPaladin. 2008 Todos los derechos reservados.
Creative Commons License
dpaladin theme by Francisco Javier is licensed under a Creative Commons Atribución-No comercial-No Derivadas 2.5 México License.

Valid XHTML 1.0 Strict ¡CSS Válido!