Con PHP, es fácil de subir archivos al servidor.
Sin embargo, con mayor facilidad tiene peligro, por lo que siempre debe tener cuidado al permitir la carga de archivos!
La configurar "php.ini" archivo
En primer lugar, asegúrese de que PHP está configurado para permitir la carga de archivos.
En su "php.ini" archivo, busque la directiva file_uploads, y configurarlo en On:
file_uploads = On
Crear el formulario HTML
A continuación, cree un formulario HTML que permiten a los usuarios elegir el archivo de imagen que desea cargar:
<!DOCTYPE html>
<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úrese de que el formulario utiliza method = "post"
- El formulario también necesita el following atributo: enctype = "/ form-data multiparte". Se especifica que el tipo de contenido a utilizar cuando enviar el formulario
Sin los requisitos anteriores, la carga de archivos no funcionará.
Otras cosas a destacar:
- El type="file" atributo de la <input> etiqueta muestra el campo de entrada como un archivo de control de selección, con un "Browse" botón situado junto al control de entrada
El formulario anterior envía datos a un archivo llamado "upload.php" , lo que vamos a crear otra.
Crear la carga del archivo Script PHP
El "upload.php" archivo contiene el código para cargar un archivo:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
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 explicó:
- $ target_dir = "uploads/" - Especifica el directorio donde se va a colocar el archivo
- $ Target_file especifica la ruta del archivo sea cargado
- $ uploadOk = 1 no se utiliza todavía (will be used later)
- $ ImageFileType tiene la extensión de archivo del archivo
- A continuación, compruebe si el archivo de imagen es una imagen real o una imagen falsa
Nota: tendrá que crear un nuevo directorio llamado "uploads" en el directorio donde "upload.php" reside el archivo. Los archivos subidos se guardarán allí.
Compruebe si el archivo ya existe
Ahora podemos añadir algunas restricciones.
En primer lugar, vamos a comprobar si el archivo ya existe en el "uploads" carpeta. Si lo hace, se mostrará un mensaje de error y $ uploadOk se establece en 0:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
Límite de tamaño del archivo
El campo de entrada de archivo en el formulario HTML anterior se denomina "fileToUpload" .
Ahora, queremos comprobar el tamaño del archivo. Si el archivo es mayor que 500 kb, se muestra un mensaje de error y $ uploadOk se establece en 0:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
Tipo de límite de archivos
El código siguiente sólo permite a los usuarios subir JPG, JPEG, PNG y GIF. Todos los demás tipos de archivos da un mensaje de error antes de $ 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;
}
Cargar un archivo Script PHP
La completa "upload.php" archivo ahora se ve así:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
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 ". basename( $_FILES["fileToUpload"]["name"]). " has been
uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
Completar PHP sistema de archivos de referencia
Para una referencia completa de las funciones del sistema de archivos, vaya a nuestra completa PHP sistema de archivos de referencia .