salamek / nette-files
Nette 框架的文件存储
2.1.5
2024-03-17 20:25 UTC
Requires
- ext-dom: *
- ext-exif: *
- ext-fileinfo: *
- ext-gd: *
- ext-zip: *
- latte/latte: ^2.10
- nette/application: ^3.1
- nette/di: ^3.0
- nette/http: ^3.1
- nette/utils: >=3.2
Requires (Dev)
- nette/tester: @dev
README
这是一个为Nette 框架提供的文件存储
Nette Files 实现了虚拟目录结构(IStructure、IStructureRepositry),所有文件都以 md5sum.ext 的形式存储在 dataDir 中,文件信息由 IStructureFile、IStructureFileRepository 实现,文件在结构中的位置由 IFile 和 IFileRepository 实现
安装
安装 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 - 代表
IFile与IStructure连接的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 标志
对于调整大小(第三个参数),你可以使用以下关键字 - fit、fill、exact、stretch、shrink_only、stretch、fit_exact、crop。详细信息请参阅上述 这些常量 的注释