![](/img/trans.png)
[英]Laravel serve file from any path on server as if it was in the public folder
[英]Laravel get url for file in public folder from full path
在 Laravel 中,我将上传的文件夹保存在公共文件夹的目录中。 我想找到一种方法从文件对象本身获取此文件的公共 url。
例如$file
是Symfony\\Component\\HttpFoundation\\File\\File
一个实例。 所以可以做$file->getRealPath()
返回类似C:\\xampp\\htdocs\\myapp\\public\\uploads\\2015\\2\\test.pdf
。
如何为此生成公共网址? 我尝试使用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()));
(这有效,并且应该继续在环境之间工作)但我希望有更优雅的东西。
Laravel 提供了辅助函数来生成 url。 例如,如果 $file 保存文件的路径,那么您可以简单地使用url()
函数来生成该文件的公共 url。
url($file)
我一直在为你研究这个。 问题是Symfony\\Component\\HttpFoundation\\File\\File
实际上只是 PHP SplFileInfo http://php.net/manual/en/splfileinfo.getlinktarget.php的包装器,带有一些额外的功能。
这些功能都不会给你你想要的。
您发布的解决方案是最好的选择 - 尽管如果您想稍微清理一下 -我建议将它放在自定义HTML
宏类中并这样做:
HTML::macro('show_relative_path', function()
{
return str_replace(public_path(), '' , $path);
});
然后在你看来只是做
asset(HTML::show_relative_path($file->getRealPath()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.