Laravel5 如何从控制器访问公用文件夹
Posted
技术标签:
【中文标题】Laravel5 如何从控制器访问公用文件夹【英文标题】:Laravel5 How to access public folder from controller 【发布时间】:2017-04-21 15:59:57 【问题描述】:我是 Laravel 的新手,但有一些小技巧让我无法理解。
我有一个控制器,我需要在其中列出公共文件夹中的图片(例如:public/images/album/Ecosse),但我不知道如何访问它。 我总是没有目录错误。 你能解释一下它是如何工作的吗?
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Repositories\AlbumsRepository;
use File;
class AlbumController extends Controller
protected $albumsRepository;
public function __construct(AlbumsRepository $albumsRepository)
$this->albumsRepository = $albumsRepository;
public function show($n)
$album = $this->albumsRepository->getById($n);
$files1 = File::allFiles(asset('images/albums/'.$album->titre));
foreach ($files1 as $key => $value)
if (!in_array($value,array(".","..")))
if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
$result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
else
$result[] = $value;
return view('album')->with('album', $album);
感谢您的帮助。 马克西姆
【问题讨论】:
【参考方案1】:使用RecursiveDirectoryIterator
。
$directory = new RecursiveDirectoryIterator(public_path('images/albums/'.$album->titre));
$iterator = new RecursiveIteratorIterator($directory);
foreach ($iterator as $item)
// both file and directory will be iterated.
【讨论】:
抱歉回答晚了,但我在本地,也许它改变了一些东西,因为我现在有这个目录:C:\wamp64\www\photo\public\images/albums/Ecosse。也许我需要用 / 替换 \ ? @MaximeBaude 无需手动替换,windows可以识别'\'和'/'目录分隔符。【参考方案2】:我使用url()
函数从控制器访问我的公用文件夹,例如:
url('uploads/images/user_image.png');
【讨论】:
【参考方案3】:这可行public_path('cow.jpg')
【讨论】:
以上是关于Laravel5 如何从控制器访问公用文件夹的主要内容,如果未能解决你的问题,请参考以下文章
更改文件夹结构以删除公用文件夹时对 Laravel 5 安全性的影响