繁体   English   中英

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

[英]Laravel get url for file in public folder from full path

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

例如$fileSymfony\\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)

更多信息: https : //laravel.com/docs/5.4/helpers#method-url

我一直在为你研究这个。 问题是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM