Mike, just to explain better that empty file:
Initially, there is one empty <input type="file"> element with opacity:0 positioned over add button. When you click Add you click this input in fact.
Then you select a file from the dialog which goes to this first input. Second blank input is created after file selection, and so forth.
This way you have always one extra input. Sure it could be deleted before upload and re-created upon upload success or failure but just ignoring NO_FILE error on the server side looked much easier to me.