added file upload with iframe fallback