假设包含示例代码的页面是距站点根目录较深的两个目录,例如
http://www.example.com/one/two/example-page.php
那么你可以这样做:
<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'], ENT_QUOTES)?>/files/uploaded_file.jpg'>Your Uploaded File</a>
如果该假设是错误的并且文件存储在一个目录中,该目录至少比根目录深一个目录,例如
http: //www.example.com/content/files/uploaded_file.jpg
那么你必须做更多的工作才能获得绝对网址。
<?php
$FilesystemPath = str_replace("\\", "/", realpath(dirname(__FILE__) . "/../../files/")) . "/uploaded_file.jpg";
$DocRoot = $_SERVER['DOCUMENT_ROOT'];
$Uri = str_replace($DocRoot, '', $FilesystemPath);
?>
<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'] . $Uri, ENT_QUOTES)?>'>Your Uploaded File</a>
此示例假定您知道 files 目录位于页面目录上方两个目录的目录中。
所有这些示例都假设文件系统上的目录是一对一的映射,并且没有进行 url 重写。另外,我假设您只使用普通的 http 而不是 https。如果您想在与提供页面的协议相同的协议中显示链接,那么这是一个单独的问题。