logic_earth got it right the first time... Do you SEE two separate elements in your code? No, you have ONE input of type FILE... So NO, you cannot put a space between the input and it's auto-generated button. That's all ONE HTML element, so styling it there's only ONE thing there -- it exists only ONCE in the DOM -- your margin being applied to the right of the ENTIRE element.
input[file] -- that's all there is... one single DOM element -- might LOOK like two when rendered (the text box and the button) but it's only actually ONE.
Again, default appearance has nothing to do with what a tag is or how it works.