What are some recommended methods for handling file uploads in PHP to ensure data integrity?

When handling file uploads in PHP, it is essential to ensure data integrity to prevent security vulnerabilities and potential data corruption. One recommended method is to validate the file type and size before processing the upload. Additionally, renaming the file to a unique identifier can help prevent overwriting existing files and mitigate any potential conflicts.

// Validate file type and size
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
$maxSize = 5242880; // 5MB

if (!in_array($_FILES['file']['type'], $allowedTypes) || $_FILES['file']['size'] > $maxSize) {
    // Handle invalid file type or size
    die('Invalid file type or size.');
}

// Rename file to a unique identifier
$fileName = uniqid() . '_' . $_FILES['file']['name'];
$uploadPath = 'uploads/' . $fileName;

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
    // File uploaded successfully
    echo 'File uploaded!';
} else {
    // Handle file upload error
    echo 'Error uploading file.';
}