To link to files uploaded to a page, you must use the
{{path}} variable:
<a href="{{path}}file.pdf">View PDF</a>
// or markdown:
[View PDF]({{path}}file.pdf)
Why?
If you just use links like
href="file.pdf", you are instructing the browser to locate the file relative to the page's URL, but the URL is not an actual file path on your server. Just like most modern web applications, URL's are "virtual" and user-friendly. In most cases however, the file path in X3 can be extrapolated by simply prepending /content/ to the URL. For example, URL /animals/dogs/ would normally have file path /content/animals/dogs/.