file_url
Description
File URL module provides a field type that allows either a file upload or entering a URL to an external file. The field type comes with a widget that allows the user to chose between the two options. A formatter is also provided that displays a link to the file.
Architecture
At the field type level, all files (both local and remote) get stored as a URIs. At the form level, a field widget takes care of either linking a remote file, or uploading one. When a local files is uploaded, it gets tracked by the {file_managed} table like any other file. The trick is that it gets transformed in a URI that contains the file ID, so it can be extracted later. When loading a file reference, the distinction between a local and remote file is made by a regex on the URI. On the display side, the URI simply gets rendered as a link. When the link generated by Drupal is accessed by a remote system, it needs to be able to resolve the referenced files. This is handled by issuing a redirect from the /file-dereference/{fid} to the actual path.