English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PHP File Upload
Using PHP, you can upload files to the server.
This chapter's example is completed under the test project, with the directory structure being:
test
|-----upload # Directory for file upload
|-----form.html # Form file
|-----upload_file.php # Código de subida PHP
Descarga del código fuente:Subida de archivos
Crear un formulario de subida de archivos
Permitir que los usuarios suban archivos desde el formulario es muy útil.
Vea a continuación este formulario HTML para subir archivos:
<html> <head> <meta charset="utf-8"> <title>Runoob Tutoriales (runoob.com)</title> </head> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Nombre de archivo:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
Guarda el código anterior en el archivo form.html.
Algunas notas sobre el formulario HTML anterior se enumeran a continuación:
1.<form> La propiedad enctype especifica qué tipo de contenido se debe usar al enviar el formulario. Utiliza "multipart" cuando el formulario necesite datos binarios, como el contenido de un archivo./form-data"。
2.<input> La propiedad type="file" especifica que la entrada debe procesarse como archivo. Por ejemplo, al previsualizar en el navegador, verá un botón de exploración junto a la casilla de entrada.
Notas:Permitir que los usuarios suban archivos es un riesgo de seguridad enorme. Solo permite que usuarios confiables ejecuten operaciones de subida de archivos.
Crear un script de subida
"upload_file.php" contiene el código para subir archivos:
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Nombre del archivo subido: " . $_FILES["file"]["name"] . "<br>"; echo "Tipo de archivo: " . $_FILES["file"]["type"] . "<br>"; echo "Tamaño del archivo: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Ubicación temporal del archivo: " . $_FILES["file"]["tmp_name"]; } ?>
Al usar el array global de PHP $_FILES, puedes subir archivos desde la computadora del cliente al servidor remoto.
El primer parámetro es el nombre del campo de formulario input, el segundo índice puede ser "name", "type", "size", "tmp_name" o "error". Véase a continuación:
$_FILES["file"]["name"] - El nombre del archivo subido
$_FILES["file"]["type"] - El tipo de archivo subido
$_FILES["file"]["size"] - El tamaño del archivo subido, en bytes
$_FILES["file"]["tmp_name"] - Nombre de la copia temporal del archivo almacenado en el servidor
$_FILES["file"]["error"] - Códigos de error causados por la subida de archivos
Esta es una forma muy simple de subir archivos. Por razones de seguridad, debe aumentar las restricciones sobre qué usuarios pueden subir archivos.
Restricciones de subida
En este script, hemos añadido restricciones a la subida de archivos. Los usuarios solo pueden subir archivos .gif, .jpeg, .jpg, .png y el tamaño del archivo debe ser menor que 200 kB:
<?php // Extensiones de archivo permitidas para la subida $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); // Obtener el nombre de la extensión del archivo if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // menor que 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Nombre del archivo subido: " . $_FILES["file"]["name"] . "<br>"; echo "Tipo de archivo: " . $_FILES["file"]["type"] . "<br>"; echo "Tamaño del archivo: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Ubicación temporal del archivo: " . $_FILES["file"]["tmp_name"]; } } else { echo "Formato de archivo ilegal"; } ?>
Guardar archivo subido
El ejemplo anterior crea una copia temporal del archivo subido en la carpeta temporal de PHP del servidor.
Este archivo de copia temporal desaparecerá al finalizar el script. Para guardar el archivo subido, necesitamos copiarlo a otro lugar:
<?php // Extensiones de archivo permitidas para la subida $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); echo $_FILES["file"]["size"]; $extension = end($temp); // Obtener el nombre de la extensión del archivo if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // menor que 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Nombre del archivo subido: " . $_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 temporal de almacenamiento del archivo: " . $_FILES["file"]["tmp_name"] . "<br>"; // Determinar si el archivo existe en el directorio "upload" actual // Si no existe el directorio "upload", necesitas crearlo, los permisos del directorio "upload" son 777 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " El archivo ya existe. "; } else { // Si el archivo no existe en el directorio "upload", sube el archivo al directorio "upload" move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "El archivo se almacena en: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Formato de archivo ilegal"; } ?>
El script superior verifica si el archivo ya existe, si no existe, copia el archivo al directorio llamado "upload".
La demostración de la operación de carga de archivos se muestra a continuación:
Este es el contenido completo del artículo, esperamos que sea útil para su aprendizaje y que todos nos apoyen en el tutorial de clamor.
Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de copyright, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.