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 安全性的影响

如何从资源文件夹动态加载资产到公用文件夹并使用asset()助手访问它们

如何访问公用文件夹外的图像(Laravel)[重复]

无法从反应应用程序访问快速服务器中的公用文件夹

Next.js 如何访问上传到公用文件夹的文件?

在浏览器中访问公用文件夹时隐藏目录列表