Php Laravel从完整路径获取公用文件夹中文件的url

Php Laravel从完整路径获取公用文件夹中文件的url,php,laravel-4,Php,Laravel 4,在Laravel中,我将上载的文件夹保存在公用文件夹的一个目录中。我想找到一种从文件对象本身获取此文件的公共url的方法 例如,$file是Symfony\Component\HttpFoundation\file\file的一个实例。因此,您可以执行$file->getRealPath(),它返回类似C:\xampp\htdocs\myapp\public\uploads\2015\2\test.pdf的内容 我如何生成此的公共url?我尝试使用asset($file->getRealPath

在Laravel中,我将上载的文件夹保存在公用文件夹的一个目录中。我想找到一种从文件对象本身获取此文件的公共url的方法

例如,
$file
Symfony\Component\HttpFoundation\file\file
的一个实例。因此,您可以执行
$file->getRealPath()
,它返回类似
C:\xampp\htdocs\myapp\public\uploads\2015\2\test.pdf的内容

我如何生成此的公共url?我尝试使用
asset($file->getRealPath())但这会给出类似
http://localhost/myapp/C:\xampp\htdocs\myapp\public\uploads\2015\2\06-12-2014-2.pdf
。也就是说,我需要先删除公用文件夹前面的路径部分,然后再将其馈送到
asset()

我想做一些类似的事情

asset(str_replace(public_path(), '' , $file->getRealPath()));

(这是可行的,应该在不同的环境中继续工作)但我希望有更优雅的东西。

我一直在为您研究这个。问题是,
Symfony\Component\HttpFoundation\File\File
实际上只是PHP SplFileInfo的包装器,带有一些额外的函数

这些函数都不能满足您的需求

发布您的解决方案是最好的选择-尽管如果您想稍微清理一下-:

那么在你看来就这么做吧

asset(HTML::show_relative_path($file->getRealPath()));

Laravel提供了助手函数来生成URL。例如,如果$file保存文件的路径,则只需使用
url()
函数生成此文件的公共url即可

url($file)
更多信息:

url($file)