The second section of code in my original question turned out to work, except for 2 things.
1) The method does not like jQuery, so instead of
var a = $(this).parent().find('input')[0];
I assigned an ID to my file input and instead called
var a = document.getElementById('upload_select');
2) Safari blatantly ignores this if the input is hidden (display:none;
), which is was, so instead I made the input font-size = 1px; and opacity = 0.
Implementing these two changes got the code working.