Spotify is a nonstarter for me because I can't upload my own music. I don't want to be beholden to whatever they decide I can listen to, and there's lots of music I want to listen to that's not in any streaming catalogue.
edit: note I say "upload," not syncing local files to my phone. I want a built-in streaming catalogue + cloud music locker that all my devices stream from, not something I have to manually transfer files between for every device
You can import local files to Spotify [0] and if you download the playlist for offline use on your mobile device, they'll be synced over from your desktop [1].
The problem with Spotify's Local Files feature is that the music you add cannot be added to Liked Songs. They must be in a playlist in order to be synced across.
As someone who listens to their music by just tapping shuffle on Liked Songs, this is a no-go.
That's completely fair and I even pay for iTunes Match even though I don't really use it anymore, it and Apple Music never meshed well in my experience but maybe it's gotten better. There is a way to listen to your own music in Spotify (even mobile) [0] but it might be a little shaky, I doubt they care much about it. I've used it before but only on desktop.
I've read up on Spotify's custom library stuff, and it seems to just be a weird hack that only works on one device. What I really want is a music locker I can stream to any device to fill in the gaps that aren't available in the streaming library.
In Spotify's settings on your PC, you can configure directories to look for "local files". Then, you can make playlists of local files and they will sync to your other devices over your local WiFi network.
Have you considered Jriver cloudplay: https://wiki.jriver.com/index.php/Cloudplay
It's not free but Jriver is a pretty good media player for local files.
The one downside of Jriver is their android/apple apps are a bit crap, but there are 3rd party alternatives.
edit: note I say "upload," not syncing local files to my phone. I want a built-in streaming catalogue + cloud music locker that all my devices stream from, not something I have to manually transfer files between for every device