Maybe I don't understand the problem correctly, but why not just preflight an HTTPS request when your widget loads?
In the time it takes the user to pick their file(s) to upload, the initial SSL negotiation will most likely have finished. And if you upload multiple files serially, the browser should even reuse the current SSL context, so it wouldn't be ~300ms per file.