If you are uploading via Core admin pages, WordPress will most likely upload the file, and then create an attachment
post– that is, a post with the attachment
post type. So the save_post_attachment
hook might do it for you.
3362 /**
3363 * Fires once a post has been saved.
3364 *
3365 * The dynamic portion of the hook name, `$post->post_type`, refers to
3366 * the post type slug.
3367 *
3368 * @since 3.7.0
3369 *
3370 * @param int $post_ID Post ID.
3371 * @param WP_Post $post Post object.
3372 * @param bool $update Whether this is an existing post being updated or not.
3373 */
3374 do_action( "save_post_{$post->post_type}", $post_ID, $post, $update );
It is hard to be very specific given how general the question is.