Can I check a file's properties before saving it with system_retrieve_file? My understanding of system_retrieve_file is that it saves the file temporarily first. Is it possible to check this file and if it passes, then save it?

I've only used this function like below.

$image = 'http://.jpg';
$file = system_retrieve_file($image, 'public://images/', TRUE, $replace = FILE_EXISTS_REPLACE);


Thanks
It depends on what the file "properties" you're wanting to check here. 

The file contents? Sure. You can invoke $result = drupal_http_request($url);(7) or \Drupal::httpClient()-&gt;get($url)-&gt;getBody();(8) ahead of time to inspect the HTTP contents before calling system_retrieve_file(). 

The file entity properties (or the temporary file created before moving to $destination)? No (without replicating/modifying some core functionality). There are no open hooks to that before system_retrieve_file() commits to saving that data to filesystem/DB.