Are there any best practices for handling file uploads in PHP to prevent image mix-ups or file corruption?

When handling file uploads in PHP, it is important to implement measures to prevent image mix-ups or file corruption. One way to achieve this is by renaming the uploaded files to ensure they have unique names and are not overwritten. Additionally, validating the file type and size before processing the upload can help prevent unexpected issues.

// Handle file upload
if(isset($_FILES['file'])){
    $file_name = uniqid() . '_' . $_FILES['file']['name'];
    $file_tmp = $_FILES['file']['tmp_name'];
    
    // Validate file type
    $file_type = $_FILES['file']['type'];
    $allowed_types = array('image/jpeg', 'image/png', 'image/gif');
    if(!in_array($file_type, $allowed_types)){
        die('Invalid file type. Only JPEG, PNG, and GIF files are allowed.');
    }
    
    // Validate file size
    $file_size = $_FILES['file']['size'];
    $max_size = 1048576; // 1MB
    if($file_size > $max_size){
        die('File size is too large. Maximum file size allowed is 1MB.');
    }
    
    // Move uploaded file to desired directory
    move_uploaded_file($file_tmp, 'uploads/' . $file_name);
    echo 'File uploaded successfully.';
}