WebRTC solves all the issues you're mentioning, and is available in Chrome and Firefox (in some for in Edge, and soon in Safari).
Three examples of this, implemented and working:
- https://www.sharedrop.io/ - https://www.justbeamit.com/ - https://file.pizza/