I use `python -m http.server` on the sender side, and
https://github.com/Densaugeo/uploadserver on the receiver side if Python or the network is problematic to setup on the sender. This is simple and works well for my use cases, since I don't have a need for those features you mention. The only feature I miss is encryption, which could be done via an SSH tunnel with a bit more work, but I usually don't bother if I'm on my home LAN.