This is not really a issue of ZF but a handling problem of yourself.
When you want to add the filter after the file has been received you must do it in this order.
When adding the filter before the file has been received, like you did it at initiation of the form, it is impossible for the filter to know the real uploaded name as you fixed source with the filename.
You will have to:
* Check if the file was uploaded
* Check if the file is valid
* Add the filter
* Receive the file
Simply do not receive the file element when no file was given