file_create_url
- Versions
- 4.6 – 6
file_create_url($path)- 7
file_create_url($uri)
Creates a web-accessible URL for a stream to an external or local file.
Compatibility: normal paths and stream wrappers.
See also
There are two kinds of local files:
- "created files", i.e. those in the files directory (which is stored in the file_directory_path variable and can be retrieved using file_directory_path()). These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation).
- "shipped files", i.e. those outside of the files directory, which ship as part of Drupal core or contributed modules or themes.
Parameters
$uri The URI to a file for which we need an external URL, or the path to a shipped file.
Return value
A string containing a URL that may be used to access the file. If the provided string already contains a preceding 'http', nothing is done and the same string is returned. If a valid stream wrapper could not be found to generate an external URL, then FALSE will be returned.
Related topics
Code
includes/file.inc, line 310
<?php
function file_create_url($uri) {
// Allow the URI to be altered, e.g. to serve a file from a CDN or static
// file server.
drupal_alter('file_url', $uri);
$scheme = file_uri_scheme($uri);
if (!$scheme) {
// If this is not a properly formatted stream, then it is a shipped file.
// Therefor, return the URI with the base URL prepended.
return $GLOBALS['base_url'] . '/' . $uri;
}
elseif ($scheme == 'http' || $scheme == 'https') {
// Check for http so that we don't have to implement getExternalUrl() for
// the http wrapper.
return $uri;
}
else {
// Attempt to return an external URL using the appropriate wrapper.
if ($wrapper = file_stream_wrapper_get_instance_by_uri($uri)) {
return $wrapper->getExternalUrl();
}
else {
return FALSE;
}
}
}
?>Login or register to post comments 