Crear Un Formulario de Carga

4
Crear un formulario de carga-Archivo Para permitir a los usuarios subir archivos de una forma puede ser muy útil. Mira el siguiente formulario para subir archivos HTML: <html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html> Tenga en cuenta lo siguiente acerca de la forma HTML anterior: El atributo enctype de la etiqueta <form> especifica el tipo de contenido que se utilizará al enviar el formulario. "Multipart / form-data" se utiliza cuando se requiere un formulario de datos binarios, tales como el contenido de un archivo, se va a cargar El type = "file" atributo de la etiqueta <input> especifica que la entrada debe ser procesada como un archivo. Por ejemplo, cuando se ve en un navegador, habrá un botón de exploración junto al campo de entrada Nota: Permitir a los usuarios subir archivos es un gran riesgo de seguridad. Sólo permita que los usuarios de confianza para llevar a cabo la carga de archivos. Cree el script Subir El "upload_file.php" archivo contiene el código para cargar un archivo: <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />";

description

Para permitir a los usuarios subir archivos php

Transcript of Crear Un Formulario de Carga

Page 1: Crear Un Formulario de Carga

Crear un formulario de carga-Archivo

Para permitir a los usuarios subir archivos de una forma puede ser muy útil.

Mira el siguiente formulario para subir archivos HTML:

<html><body>

<form action="upload_file.php" method="post"enctype="multipart/form-data"><label for="file">Filename:</label><input type="file" name="file" id="file" /> <br /><input type="submit" name="submit" value="Submit" /></form>

</body></html>

Tenga en cuenta lo siguiente acerca de la forma HTML anterior:

El atributo enctype de la etiqueta <form> especifica el tipo de contenido que se utilizará al enviar el formulario. "Multipart / form-data" se utiliza cuando se requiere un formulario de datos binarios, tales como el contenido de un archivo, se va a cargar

El type = "file" atributo de la etiqueta <input> especifica que la entrada debe ser procesada como un archivo. Por ejemplo, cuando se ve en un navegador, habrá un botón de exploración junto al campo de entrada

Nota: Permitir a los usuarios subir archivos es un gran riesgo de seguridad. Sólo permita que los usuarios de confianza para llevar a cabo la carga de archivos.

Cree el script Subir

El "upload_file.php" archivo contiene el código para cargar un archivo:

<?phpif ($_FILES["file"]["error"] > 0)  {  echo "Error: " . $_FILES["file"]["error"] . "<br />";  }else  {  echo "Upload: " . $_FILES["file"]["name"] . "<br />";  echo "Type: " . $_FILES["file"]["type"] . "<br />";  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";  echo "Stored in: " . $_FILES["file"]["tmp_name"];  }?>

Al utilizar el global de PHP array $ _FILES puede cargar archivos desde un equipo cliente al servidor remoto.

Page 2: Crear Un Formulario de Carga

El primer parámetro es el nombre del formulario de entrada y el segundo índice puede ser "nombre", "tipo", "tamaño", "tmp_name" o "error". De esta manera:

$ _FILES ["Archivo"] ["name"] - el nombre del archivo subido $ _FILES ["Archivo"] ["tipo"] - el tipo del archivo subido $ _FILES ["Archivo"] ["size"] - el tamaño en bytes del archivo subido $ _FILES ["Archivo"] ["tmp_name"] - el nombre de la copia temporal del archivo

almacenado en el servidor $ _FILES ["Archivo"] ["error"] - el código de error resultante de la carga de archivos

Esta es una manera muy simple de subir archivos. Por razones de seguridad, debe agregar restricciones en lo que el usuario está autorizado a cargar.

Restricciones a la subida

En este script se añade algunas restricciones para la carga de archivos. El usuario puede subir gif, jpeg, png y archivos, y el tamaño del archivo debe ser de menos de 20 kb...:

<?php$allowedExts = array("jpg", "jpeg", "gif", "png");$extension = end(explode(".", $_FILES["file"]["name"]));if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/png")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000)&& in_array($extension, $allowedExts))  {  if ($_FILES["file"]["error"] > 0)    {    echo "Error: " . $_FILES["file"]["error"] . "<br />";    }  else    {    echo "Upload: " . $_FILES["file"]["name"] . "<br />";    echo "Type: " . $_FILES["file"]["type"] . "<br />";    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";    echo "Stored in: " . $_FILES["file"]["tmp_name"];    }  }else  {  echo "Invalid file";  }?>

Nota: Para IE reconozca los archivos jpg el tipo debe ser pjpeg, para FireFox debe ser jpeg.

Guardar el archivo de Subida

Page 3: Crear Un Formulario de Carga

Los ejemplos anteriores crear una copia temporal de los archivos cargados en la carpeta temporal de PHP en el servidor.

Los archivos temporales de copiado desaparece cuando el programa termina. Para guardar el archivo cargado debemos copiarlo a una posición distinta:

<?php$allowedExts = array("jpg", "jpeg", "gif", "png");$extension = end(explode(".", $_FILES["file"]["name"]));if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/png")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000)&& in_array($extension, $allowedExts))  {  if ($_FILES["file"]["error"] > 0)    {    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";    }  else    {    echo "Upload: " . $_FILES["file"]["name"] . "<br />";    echo "Type: " . $_FILES["file"]["type"] . "<br />";    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))      {      echo $_FILES["file"]["name"] . " already exists. ";      }    else      {      move_uploaded_file($_FILES["file"]["tmp_name"],      "upload/" . $_FILES["file"]["name"]);      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];      }    }  }else  {  echo "Invalid file";  }?>

Este script comprueba si el archivo ya existe, si no lo hace, se copia el archivo a la carpeta especificada.

Nota: En este ejemplo se guarda el archivo en una carpeta nueva llamada "upload"