Laravel函数将realpath()转换为绝对URL


Laravel function to convert a realpath() to an absolute URL

我已经声明了一个指向如下文件夹的路径:

$path = realpath(public_path('uploads'));

这给了我这个值:/var/www/mywebsite/public/uploads

现在,我想把它变成一个绝对的URL,像这样:http://www.mywebsite.com/uploads

以下是我所做的:

dd(asset($path));     // Wrong: http://www.mywebsite.com/var/www/mywebsite/public/uploads
dd(url($path);        // Same.
dd(asset('uploads')); // Right, but I only want to use $path

有没有一种预先构建的方法可以在Laravel 5中实现这一点?

您几乎达到asset($path)

只需将其修改为asset('uploads'),即可解析为http://www.mywebsite.com/uploads

资产URL帮助程序生成Laravel应用程序公用文件夹的URL。然后你只需添加你想从那里转到的文件夹。

您的$path是相对于带有public_path('uploads')public文件夹,因此,'uploads'本身指向绝对路径。只需添加主机部分即可。例如:

$inPublic = 'uploads';
$localPath = realpath(public_path($inPublic));
// then, either
$url = url("/" . trim($inPublic, "/''"));    
// or
$publicPath = realpath(public_path());
$relativePart = str_replace($publicPath, '', $localPath);
$url = url("/" . trim($relativePart, "/''"));