If all computers were publicly reachable it would be trivial to send files peer-to-peer.
I guess IPFS can be an interesting solution to this problem.
NAT punching is a thing, but it makes the implementation of p2p a lot more complicated.
The world got paranoid, as any exposed port to the raw net is seen as an invite to worms.
WebRTC exists today, and it's quite good. It's not a technology problem, it's a matter of practicality. Mobile devices being reachable over the network 24/7 is just not realistic (connectivity falls off, battery considerations, etc.). I don't want my phone to heat up and come to a crawl because the video I just shared is being downloaded by three friends over LTE while I ride the train.
The fact that files can only be downloaded once from this new service isn't just a coincidence.
Unfortunately AFAIK there has been no successful open point to point file transfer protocol that different OSes could implement and be interoperable over the Internet. Going to https://send.firefox.com/ and drop a file there is not an improvement. It's still centralized. Is there any solution to the problem of discovering the address of the sender and the recipient without a central server? I would think it's an impossible problem but there are clever people out there. Maybe mesh networks?
We can send the shit out of some files... if you know what you're doing (browsers retrieve tons of files all the time, for example).
It's difficult creating a service that is accessible to people who barely understand what a file is in the first place.