Yes, things like media files - or your software. No, I don't sell software - I give it away for free, for example here. Bu I build sites with selling capabilities. My favorite solution for it is VirtueMart, THE shop to be used with Joomla.
Is powerful - but is not for beginners, you can easily lost here without proper guidance.
So, here's the recipe:
- prepare your items, preferably pack them in a widely used format, like .zip
- in Joomla backend go to Components>VirtueMart
- In the left pane select Configuration
- in the Downloads page check the "Enable Downloads" box
- in the same tab, check the Download Root fields value. You will need it. If you get what the explanation text is telling you about the WEBROOT:
The physical path to the files for the customer download. (trailing slash at the end!)then proceed, and change the value to fir your needs. If not, leave it alone, will give some explanations on this later.
- create a new product using the Products>Add product screen.
- when done, go to Products>List products, locate your new product, and click on the little image icon in the Media column
- upload the file using the options on popup, and be sure to change File Type to "Downloadable Product File (to be sold!)
- Configure the rest of the settings appropriately and then Save.
What about that WEBROOT thing?
Web servers (Apache in first place, the server Joomla has written for, but not only, all of them) are using a special directory, where you place your files which will be shown on the web. If you have a cPanel powered host, this directory is often called "public_html", on other servers is called "wwwroot", but this is freely configurable. This is that famous WEBROOT. The decent hosting companies are letting you to access not only this directory, but at least one level higher, so by default you see at least your own directory, lets say that's called "username", and in that you have the "public_html" directory, where your Joomla files are residing. The above text in VirtueMart's config is urging you to create a directory outside of "public_html", for example "username/downloads", and use that to store your downloadables. The essence of trick is simple: Joomla can see, and read/write this directory, but nobody from the web can access what is stored there directly - so can't download it for free, just after buying it! essentially this is a security tip, having the extra benefit, that doing as described above, Google won't find your files accidentally, index them and post in search results, letting kids to easily find'em and download them.