You can achieve what you want by encrypting the file using a public key. Whoever has the corresponding private key will be able to decrypt it. Other nodes will see the existence of the file, but will not be able to see its content.
This is a common use case, but requires a lot of infrastructure (identity, contact list, shared public keys, encryption) and so it can take time to implement. At Mainframe, we're working on bringing all of these pieces together to make decentralized app development easier. (We also use Ethereum Swarm for the decentralized file storage layer, but have plans to integrate IPFS at some point).