salamek/nette-files

Nette 框架的文件存储

2.1.5 2024-03-17 20:25 UTC

This package is auto-updated.

Last update: 2024-09-17 21:41:23 UTC


README

这是一个为Nette 框架提供的文件存储

Nette Files 实现了虚拟目录结构(IStructureIStructureRepositry),所有文件都以 md5sum.ext 的形式存储在 dataDir 中,文件信息由 IStructureFileIStructureFileRepository 实现,文件在结构中的位置由 IFileIFileRepository 实现

安装

安装 salamek/nette-files 的最佳方式是使用 Composer

$ composer require salamek/nette-files

然后你需要在 config.neon 中注册扩展。

    extensions:
        files: Salamek\Files\DI\FilesExtension

    files:
        dataDir: %wwwDir%/data
        webTempDir: %wwwDir%/webtemp
        webTempPath: 'webtemp'
        iconDir: %wwwDir%/assets/file

你需要实现以下内容

  • 代表单个文件的 IFile 实体
  • 用于 IFile 的存储库 IFileRepository
  • 代表单个结构项(文件夹/目录)的 IStructure 实体
  • 用于 IStructure 的存储库 IStructureRepository
  • 代表 IFileIStructure 连接的 IStructureFile 实体(在哪个文件夹中有哪个文件)
  • 用于 IStructureFile 的存储库 IStructureFileRepository

该包包含一个特质,你需要在想要使用文件存储的类中使用。这仅适用于 PHP 5.4+,对于旧版本,你可以简单地将特质内容复制并粘贴到你想使用它的类中。

<?php

class BasePresenter extends Nette\Application\UI\Presenter {

    use Salamek\Files\TImagePipe;

}

使用方法

保存文件

/** @var Salamek\Files\FileStorage $fileStorage */
/** @var \SplFileInfo|FileUpload $fileUpload */
$fileStorage->processFile($fileUpload); // Saves file to `dataDir` as %wwwDir%/data/md5sum_of_file.ext

在 Latte 中使用 ImagePipe

<a href="{img IFile|IStructureFile}"><img n:img="IFile|IStructureFile, 200x200, fill"></a>

输出

<a href="%wwwDir%/data/md5sum_of_file.ext"><img src="%wwwDir%/data/200x200_fill_md5sum_of_file.ext"></a>

调整 ImagePipe 标志

对于调整大小(第三个参数),你可以使用以下关键字 - fitfillexactstretchshrink_onlystretchfit_exactcrop。详细信息请参阅上述 这些常量 的注释