Storing even bytes on the Ethereum blockchain can be quite expensive -- not to mention how costly it is to store multimedia files. The reason behind is that when something gets stored onto the blockchain, it stays there forever -- even if you inactivate it at a later time (remember, all Ethereum full nodes in the world will need to keep a copy of the full blockchain on their hard drives, which is very costly).
Therefore, in a nutshell, the blockchain is mainly used to store transactions (deploying a contract itself is a transaction, you may want to check the definition here https://github.com/ethereum/wiki/wiki/Glossary) than e.g. your files. If you are to implement for example a versioned file storage system through a blockchain component, you should probably want to store the files off-chain (e.g. in a distributed way as you may desire, see below) and the transactions (who published a file, who modified a file, etc.) on-chain.
How to store a file off-chain in a distributed way? There is not fixed or standard way of doing it but IPFS (InterPlanetary File System) seems to be the most discussed recently. IPFS is a content-addressable, P2P distributed file system based on distributed hash table and BitTorrent protocol (probably what you are looking for). Please check on https://ipfs.io/ for more details. You may also want to check on another frequently discussed distributed file system, Swarm, which is in may aspects similar to IPFS. The differences between them remains beyond the topic of this question but you may check on What is the difference between Swarm and IPFS? for more information.