La manera de subir archivos con php y guardarlos en una carpeta es un proceso completamente normal en la tarea de cualquier programador. En este post les voy a enseñar a crear un formulario para subir archivos en html con php.
En este sistema para subir archivos en php lo primero que debemos tener es el formulario en html para empezar el proceso y poder cargar la imagen para luego procesarla. En el siguiente ejemplo vemos un ejemplo de formulario simple de html para realizar la tarea.
<form action="index.php" method="POST" enctype="multipart/form-data"/> Añadir imagen: <input name="archivo" id="archivo" type="file"/> <input type="submit" name="subir" value="Subir imagen"/> </form>
Siempre es importante saber que el formulario solo se puede trabajar con el método POST. En el mismo formulario contiene un input tipo file que nos permitirá seleccionar un archivo desde nuestra pc, teléfono móvil o tableta y un botón submit para poder ejecutar el formulario.
<?php #webdebe.xyz if (isset($_POST['subir'])) { $archivo = $_FILES['archivo']['name']; if (isset($archivo) && $archivo != "") { $tipo = $_FILES['archivo']['type']; $tamano = $_FILES['archivo']['size']; $temp = $_FILES['archivo']['tmp_name']; if (!((strpos($tipo, "gif") || strpos($tipo, "jpeg") || strpos($tipo, "jpg") || strpos($tipo, "png")) && ($tamano < 2000000))) { echo '<div><b>Error. La extensión o el tamaño de los archivos no es correcta.<br/> - Se permiten archivos .gif, .jpg, .png. y de 200 kb como máximo.</b></div>'; } else { if (move_uploaded_file($temp, 'images/'.$archivo)) { chmod('images/'.$archivo, 0777); echo '<div><b>Se ha subido correctamente la imagen.</b></div>'; echo '<p><img src="images/'.$archivo.'"></p>'; } else { echo '<div><b>Ocurrió algún error al subir el fichero. No pudo guardarse.</b></div>'; } } } } ?>
El anterior ejemplo solo subimos archivos de tipo imágenes pero mover archivos en php podríamos únicamente modificar el tipo permitido de archivo, por ejemplo si queremos subir un archivo tipo pdf con php lo único que debemos es colocar de esta forma y listo.
if (!((strpos($tipo, "gif") || strpos($tipo, "jpeg") || strpos($tipo, "jpg") || strpos($tipo, "png") || strpos($tipo, "pdf")) && ($tamano < 2000000)))
En el ejemplo de arriba se podria ir agregando todo lo que sea necesario con el || como archivos word, en este caso podria ser .doc o .docx.
Si deseamos renombrar el archivo de upload con php podríamos utilizar la función rename() del mismo php colocando el valor que ustedes deseen
La función mas importante de todo el proceso es move_uploaded_file() es el que se encarga de realizar la tarea de mover desde la carpeta temporal a la carpeta definitiva donde deseamos que el archivo vaya
Deben recordar que en la carpeta de destino uno debe tener los permisos suficientes para poder subir el archivo a la carpeta de destino, en todo caso si trabajan sobre Windows no van a encontrar mayor problema pero si es un ambiente Linux deben saber que por lo menos deben contar con un permiso 775 para poder guardar. El script que muestro mas arriba realizar un chmod 0777 pero posiblemente no contenga suficientes permisos para poder ejecutar una operación de este modo.