Hi *Mark*,
I was unable to duplicate your issue using either the standard file field or the SafeCracker File field. Here is the very basic code I used to test with:
<!DOCTYPE html>
<html lang="en">
<head>
<title>SafeCracker</title>
<link href="{path="css/_ee_saef_css"}" type="text/css" rel="stylesheet" media="screen">
</head>
<body>
{exp:safecracker
channel="basic-channel"
return="basic/thanks"
dynamic_title="[basic-text] Submission"}
<label for="basic-text">Enter some text:</label>
<input type="text" name="basic-text" value="{basic-text}" />
<label for="basic-area">Write something nice:</label>
<textarea name="basic-area"></textarea>
{custom_fields}
{if safecracker_file}
<b>Upload a File:</b>
{display_field}
{/if}
{/custom_fields}
<input type="submit" value="Submit">
{/exp:safecracker}
</body>
</html>
If you make a separate channel with just some basic fields and create a safecracker template with just those basic fields (similar to my test), what are the results?
I conducted this test on Safari for Mac 5.1.1 and ExpressionEngine 2.3.1
Cheers,