“page not found” due to hat character (“^”) in a upload file name

This is a filter I use to keep my clients from adding special characters to their filenames, should work for you – you’ll have to reupload the file though.

/**
 /* Sanitize Uploaded Filenames
 /* @param array $file
 /* @return array $file
 */
function sanitize_file_uploads( $file ){
    $file['name'] = sanitize_file_name($file['name']);
    $file['name'] = preg_replace("/[^a-zA-Z0-9\_\-\.]/", "", $file['name']);
    $file['name'] = strtolower($file['name']);
    add_filter('sanitize_file_name', 'remove_accents');

    return $file;
}
add_filter('wp_handle_upload_prefilter', 'sanitize_file_uploads');

This function only allows numeric, numbers, underscores, dashes, and periods. It converts it to lowercase and also run it through the accents function.