Tutorial PHP

PHP INICIO Introducción PHP Instalación de PHP Sintaxis PHP Comentarios PHP Variables PHP PHP Echo / Imprimir Tipos de datos PHP Cadenas PHP Números PHP Matemáticas PHP Constantes PHP Operadores PHP PHP Si... Más... Elseif Cambio de PHP Bucles de PHP Funciones PHP Matrices de PHP Superglobales de PHP PHP expresión regular

Formularios PHP

Manejo de formularios PHP Validación de formulario PHP Formulario PHP requerido Formulario PHP URL/Correo electrónico Formulario PHP completo

PHP Avanzado

Fecha y hora PHP PHP Incluir Manejo de archivos PHP Archivo PHP Abrir/Leer Archivo PHP Crear/Escribir Carga de archivos PHP Cookies PHP Sesiones PHP Filtros PHP Filtros PHP avanzados Funciones de devolución de llamada de PHP PHPJSON Excepciones de PHP

POO de PHP

PHP ¿Qué es la programación orientada a objetos? Clases PHP/Objetos Constructor PHP Destructor PHP Modificadores de acceso de PHP Herencia de PHP Constantes PHP Clases abstractas de PHP Interfaces PHP Características de PHP Métodos estáticos de PHP Propiedades estáticas de PHP Espacios de nombres de PHP Iterables de PHP

Base de datos MySQL

Base de datos MySQL Conexión MySQL MySQL Crear base de datos Crear tabla MySQL MySQL Insertar datos MySQL Obtener la última identificación MySQL Insertar Múltiples MySQL preparado Datos seleccionados de MySQL mysql donde MySQL Ordenar por MySQL Eliminar datos Datos de actualización de MySQL Límite de datos de MySQL

PHPXML _

Analizadores PHP XML Analizador PHP SimpleXML PHP SimpleXML - Obtener PHP XML Expatriados PHP XML DOM

PHP -AJAX

Introducción a AJAX AJAXPHP Base de datos AJAX XML AJAX Búsqueda en vivo de AJAX Encuesta AJAX

Ejemplos de PHP

Ejemplos de PHP Compilador PHP Cuestionario de PHP Ejercicios PHP Certificado PHP

Referencia PHP

Descripción general de PHP Matriz de PHP Calendario PHP Fecha PHP Directorio PHP Error PHP Excepción PHP Sistema de archivos PHP Filtro PHP PHPFTP PHPJSON Palabras clave PHP PHP Libxml Correo PHP Matemáticas PHP PHP misceláneo PHP MySQLi Red PHP Control de salida de PHP PHP expresión regular PHP SimpleXML flujo PHP Cadena PHP Manejo de variables de PHP Analizador PHP XML código postal de PHP Zonas horarias de PHP

Carga de archivos PHP


Con PHP, es fácil cargar archivos al servidor.

Sin embargo, con la facilidad viene el peligro, ¡así que siempre tenga cuidado al permitir la carga de archivos!


Configurar el archivo "php.ini"

Primero, asegúrese de que PHP esté configurado para permitir la carga de archivos.

En su archivo "php.ini", busque la file_uploadsdirectiva y establézcala en On:

file_uploads = On

Crear el formulario HTML

A continuación, cree un formulario HTML que permita a los usuarios elegir el archivo de imagen que desean cargar:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Algunas reglas a seguir para el formulario HTML anterior:

  • Asegúrate de que el formulario use method="post"
  • El formulario también necesita el siguiente atributo: enctype="multipart/form-data". Especifica qué tipo de contenido usar al enviar el formulario

Sin los requisitos anteriores, la carga del archivo no funcionará.

Otras cosas a tener en cuenta:

  • El atributo type="file" de la etiqueta <input> muestra el campo de entrada como un control de selección de archivos, con un botón "Examinar" junto al control de entrada.

El formulario anterior envía datos a un archivo llamado "upload.php", que crearemos a continuación.



Crear la secuencia de comandos PHP del archivo de carga

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

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

Script PHP explicado:

  • $target_dir = "uploads/": especifica el directorio donde se colocará el archivo
  • $target_file especifica la ruta del archivo que se cargará
  • $uploadOk=1 aún no se usa (se usará más adelante)
  • $imageFileType contiene la extensión de archivo del archivo (en minúsculas)
  • A continuación, compruebe si el archivo de imagen es una imagen real o una imagen falsa

Nota: Deberá crear un nuevo directorio llamado "uploads" en el directorio donde reside el archivo "upload.php". Los archivos cargados se guardarán allí.


Comprobar si el archivo ya existe

Ahora podemos agregar algunas restricciones.

Primero, comprobaremos si el archivo ya existe en la carpeta "uploads". Si es así, se muestra un mensaje de error y $uploadOk se establece en 0:

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Limitar tamaño de archivo

El campo de entrada de archivos en nuestro formulario HTML anterior se llama "fileToUpload".

Ahora, queremos comprobar el tamaño del archivo. Si el archivo tiene más de 500 KB, se muestra un mensaje de error y $uploadOk se establece en 0:

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Limitar tipo de archivo

El siguiente código solo permite a los usuarios cargar archivos JPG, JPEG, PNG y GIF. Todos los demás tipos de archivos dan un mensaje de error antes de establecer $uploadOk en 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

Carga completa del script PHP del archivo

El archivo completo "upload.php" ahora se ve así:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Referencia completa del sistema de archivos PHP

Para obtener una referencia completa de las funciones del sistema de archivos, vaya a nuestra referencia completa del sistema de archivos PHP .