How can PHP developers ensure the security and integrity of file uploads in a web application?

To ensure the security and integrity of file uploads in a web application, PHP developers can validate file types, limit file size, store files outside the web root directory, and use a secure file naming convention.

// Validate file type
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['file']['type'], $allowedTypes)) {
    die('Invalid file type. Only JPEG, PNG, and GIF files are allowed.');
}

// Limit file size
$maxSize = 1048576; // 1MB
if ($_FILES['file']['size'] > $maxSize) {
    die('File size is too large. Maximum file size allowed is 1MB.');
}

// Store files outside web root directory
$uploadDir = '/var/www/uploads/';
$uploadFile = $uploadDir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
    echo 'File is valid, and was successfully uploaded.';
} else {
    echo 'File upload failed.';
}

// Secure file naming convention
$filename = uniqid() . '_' . $_FILES['file']['name'];