A través de PHP, se pueden cargar archivos al servidor.
Los ejemplos de este capítulo se completan en el proyecto de prueba y la estructura del directorio es:
prueba|-----upload # Directorio para cargar archivos|-----form.html # Archivo de formulario|-----upload_file.php # Código de carga PHP
Permitir a los usuarios cargar archivos desde un formulario es muy útil.
Eche un vistazo al siguiente formulario HTML para cargar archivos:
<html><head><meta charset="utf-8"><title>Tutorial de codificador (codercto.com)</title></head><body><form action="upload_file.php" método=" publicación " enctype="multipart/form-data"> <label for="file">Nombre de archivo:</label> <input type="file" name="file" id="file"><br> <tipo de entrada ="enviar" nombre="enviar" valor="Enviar"></form></body></html>
Guarde el código anterior en el archivo form.html.
Algunas notas sobre el formulario HTML anterior se enumeran a continuación:
El atributo enctype de la etiqueta <form> especifica qué tipo de contenido usar al enviar el formulario. Cuando un formulario requiere datos binarios, como el contenido del archivo, utilice " multipart/form-data ".
El atributo type="file" de la etiqueta <input> especifica que la entrada debe procesarse como un archivo. Por ejemplo, al obtener una vista previa en un navegador, verá un botón de exploración junto al cuadro de entrada.
Nota: Permitir que los usuarios carguen archivos supone un enorme riesgo para la seguridad. Permita que solo los usuarios de confianza realicen operaciones de carga de archivos.
El archivo "upload_file.php" contiene código para cargar archivos:
<?phpif ($_FILES["archivo"]["error"] > 0){ echo "Error:" $_FILES["archivo"]["error"] "<br>";}else{ echo ". Cargar nombre de archivo: " . $_FILES["file"]["name"] . "<br>"; echo "Tipo de archivo: " . $_FILES["file"]["type"] . "<br>"; echo "Tamaño del archivo: " . ($_FILES["file"]["size"] / 1024) " kB<br>"; echo "La ubicación donde se almacena temporalmente el archivo: " . $_FILES[ "archivo"]["tmp_name"];}?>
Al utilizar la matriz global $_FILES de PHP, puede cargar archivos desde la computadora cliente a un servidor remoto.
El primer parámetro es el nombre de entrada del formulario y el segundo subíndice puede ser "nombre", "tipo", "tamaño", "tmp_name" o "error". Como se muestra a continuación:
$_FILES["file"]["name"] - el nombre del archivo cargado
$_FILES["file"]["type"] - Tipo de archivo cargado
$_FILES["file"]["size"] - Tamaño del archivo cargado, en bytes
$_FILES["file"]["tmp_name"] - El nombre de la copia temporal del archivo almacenado en el servidor
$_FILES["file"]["error"] - código de error causado por la carga del archivo
Esta es una forma muy sencilla de cargar archivos. Por razones de seguridad, debes agregar restricciones sobre quién puede cargar archivos.
En este script, agregamos restricciones a la carga de archivos. Los usuarios solo pueden cargar archivos .gif, .jpeg, .jpg, .png y el tamaño del archivo debe ser inferior a 200 kB:
<?php// Sufijos de imágenes cargados permitidos $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"][" nombre "]);$extension = end($temp); // Obtiene el sufijo del archivo if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["archivo"]["tipo"] == "imagen/jpeg")|| ($_FILES["archivo"]["tipo"] == "imagen/jpg")|| "archivo"]["tipo"] == "imagen/pjpeg")|| ($_FILES["archivo"]["tipo"] == "imagen/x-png")|| ($_FILES["archivo"]["tipo"] == "imagen/png"))&& ($_FILES["archivo"]["tamaño"] < 204800) // Menos de 200 kb&& in_array($extensión, $ Exts permitidas)){ if ($_FILES["archivo"]["error"] > 0) { echo "Error:: " . $_FILES["archivo"]["error"] . "<br>"; else { echo "Subir nombre de archivo: " . "Tipo de archivo: " . $_FILES["archivo"]["tipo"] "<br>"; echo "Tamaño de archivo: " ($_FILES["archivo"]["tamaño"] / 1024) . " kB<br>"; echo "La ubicación donde se almacena temporalmente el archivo: " . $_FILES["file"]["tmp_name"];
El ejemplo anterior crea una copia temporal del archivo cargado en la carpeta temporal PHP del servidor.
Esta copia temporal desaparecerá cuando finalice el guión. Para guardar el archivo cargado, debemos copiarlo a otra ubicación:
<?php// Sufijos de imágenes cargados permitidos $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"][" nombre "]);echo $_FILES["file"]["size"];$extension = end($temp); // Obtiene el sufijo del archivo si ((($_FILES["archivo"]["tipo"] == "imagen/gif")|| ($_FILES["archivo"]["tipo"] == "imagen/jpeg")|| ($ _FILES["archivo"]["tipo"] == "imagen/jpg")|| ($_FILES["archivo"]["tipo"] == "imagen/pjpeg")|| ($_FILES["archivo"]["tipo"] == "imagen/x-png")|| ($_FILES["archivo"]["tipo"] == "imagen/png"))&& ($ _FILES["archivo"]["tamaño"] < 204800) // Menos de 200 kb&& in_array($extensión, $allowedExts)){ si ($_FILES["archivo"]["error"] > 0) { echo "Error: " . $_FILES["archivo"]["error"] "<br>"; : " . $_FILES["archivo"]["nombre"] . "<br>"; echo "Tipo de archivo: " . $_FILES["archivo"]["tipo"] . "<br>"; echo "Tamaño del archivo: " . ($_FILES["file"]["size"] / 1024) " kB<br>"; echo "La ubicación donde se almacena temporalmente el archivo: " . ["tmp_name "] . "<br>"; // Determina si el archivo existe en el directorio de carga en el directorio actual // Si no hay un directorio de carga, debe crearlo. (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] " El archivo ya existe. "; } else { // Si el archivo no existe en el directorio de carga, cárguelo en el directorio de carga move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "nombre"]); echo "El archivo está almacenado en: " . "upload/" . $_FILES["archivo"]["nombre"]; } }}else{ echo "Formato de archivo ilegal";}?>
El script anterior comprueba si el archivo ya existe. Si no existe, lo copia en un directorio llamado "cargar".