Con php es facil subir archivos al servidor
Ponga atencion a la subida de archivos, pues muy facil puede recebir una infection
Configurar el archivo "php.ini"
Lo primero es configurar el archivo php.ini para permitir cargas de archivos
Como se hace?
En el archivo php.ini buscamos file_uploads y lo estabelecemos como ON
...ejemplo
Crear el formulario HTML
Lo primero creamos un formulario que nos permita subir archivos, del tipo file
ejemplo
<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 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.
Pero como he dicho en entradas anteriores si dejamos en blanco la action="" se enviara al proprio formulario
Crear sentencia de comandos para hacer el upload
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 subidos se guardará allí.
Comprobar si el archivo ya existe
Primero, comprobaremos si el archivo ya existe en la carpeta "uploads".
Si lo hace, se muestra un mensaje de error y $upload Ok 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 $upload Ok se establece en 0:
// Check file size if ($_FILES["fileToUpload"]["size"] > 500.000) { 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 archivo da un mensaje de error antes de configurar $uploadOk a 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 de archivo
Codigo completo para cargar 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; } } // 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."; } } ?>
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias