I'd be happy to be proven wrong but AFAIK the default Sling POST servlet does not use the data that you pass with -d in this case.
As you indicate you should use the PUT method instead (curl -T), which does not generate node names automatically.
A workaround, if that's acceptable, would be to first create (using a POST with no parameters) a folder with an autogenerated name, and then PUT your file in that folder.
If the extra path component is not ok, I'm afraid you'll have to create your own custom POST or PUT servlet for that...and maybe contribute that feature to Apache Sling ;-)