En este tutorial vamos a aprender a hacer un upload o subida de archivos usando PHP, nuestro upload tendra la capacidad de filtrar los tipos de archivo y no permitir subidas de mas del tamaño que le definamos, en el ejemplo haremos un script PHP para subir imagenes y luego mostrarlas al usuario.
Estructura
Manejaremos una estructura como la de la imagen, es necesario crear una carpeta donde almacenaremos los archivos, le pondremos un nombre determinado(/subidas) que luego definiremos en el script (index.php):
HTML
<html>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label for="archivo">Sube un archivo:</label>
<input type="file" name="archivo" id="archivo" />
<input type="submit" name="boton" value="Subir" />
</form>
<div class="resultado"> <!-- Aqui ira el codigo PHP --> </div>
</body>
</html>
Es de vital importancia definir el atributo enctype=»multipart/form-data» en la etiqueta form; de no ser así el upload no funcionara, en div.resultado saldrán los mensajes de error o de éxito.
PHP
El código PHP lo incluiremos justo debajo del formulario dentro del div.resultado, empezamos identificando el momento en que el formulario es enviado y el resto guiadse por los comentarios:
<?php
// Registramos cuando el formulario haya sido enviado
if(isset($_POST['boton'])){
// Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB
if ((($_FILES["archivo"]["type"] == "image/gif") || ($_FILES["archivo"]["type"] == "image/jpeg") || ($_FILES["archivo"]["type"] == "image/pjpeg")) && ($_FILES["archivo"]["size"] < 20000)) {
//Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0).
if ($_FILES["archivo"]["error"] > 0) {
echo $_FILES["archivo"]["error"] . "";
} else {
// Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
if (file_exists("archivos/" . $_FILES["archivo"]["name"])) {
echo $_FILES["archivo"]["name"] . " ya existe. ";
} else {
// Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
move_uploaded_file($_FILES["archivo"]["tmp_name"], "archivos/" . $_FILES["archivo"]["name"]);
echo "Archivo Subido ";
echo "<img src='archivos/".$_FILES["archivo"]["name"]."'>";
}
}
} else {
// Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje
echo "Archivo no permitido";
}
}
?>
Código Final
<html>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label for="archivo">Sube un archivo:</label>
<input type="file" name="archivo" id="archivo" />
<input type="submit" name="boton" value="Subir" />
</form>
<div class="resultado">
<?php
// Registramos cuando el formulario haya sido enviado
if(isset($_POST['boton'])){
// Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB
if ((($_FILES["archivo"]["type"] == "image/gif") || ($_FILES["archivo"]["type"] == "image/jpeg") || ($_FILES["archivo"]["type"] == "image/pjpeg")) && ($_FILES["archivo"]["size"] < 20000)) {
//Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0).
if ($_FILES["archivo"]["error"] > 0) {
echo $_FILES["archivo"]["error"] . "";
} else {
// Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
if (file_exists("archivos/" . $_FILES["archivo"]["name"])) {
echo $_FILES["archivo"]["name"] . " ya existe. ";
} else {
// Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
move_uploaded_file($_FILES["archivo"]["tmp_name"], "archivos/" . $_FILES["archivo"]["name"]);
echo "Archivo Subido ";
echo "<img src='archivos/".$_FILES["archivo"]["name"]."'>";
}
}
} else {
// Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje
echo "Archivo no permitido";
}
}
?>
</div>
</body>
</html>
Y con eso damos por finalizado este tutorial de como hacer un upload de archivos en PHP, puedes bajarte el código fuente en esta dirección.