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
。详细信息请参阅上述 这些常量 的注释