miarra / filemanipulator
库,用于访问文件服务器,可在https://bitbucket.org/miarra/fileserver.git找到
Requires
- php: >=8.0
- ext-curl: *
- nette/di: ^3.0
- nette/http: ^3.0
- nette/utils: ^3.0
- tracy/tracy: ^2.8
Requires (Dev)
- mockery/mockery: ^1.4
- nette/tester: ^2.4
- orisai/coding-standard: ^2.1
- phpstan/phpstan: ^0.12.92
README
此扩展与存储图像的文件服务器通信。为了正常工作,您需要运行FileServer应用程序,您可以在https://bitbucket.org/miarra/fileserver.git
找到它。
安装
下载
安装miarra/filemanipulator
的最佳方式是使用Composer
$ composer require miarra/filemanipulator
注册
您可以使用neon配置文件启用此扩展
extensions:
FileManipulator: Miarra\FileManipulator\FileManipulatorExtension
注入
您可以直接将工厂注入到您的Presenters/Services中
public function __construct(
private \Miarra\FileManipulator\FileManipulator $fileManipulator,
) {
parent::__construct();
...
}
HTACCESS
您必须在您的.htaccess文件中设置RewriteRule,如下所示
RewriteRule (.*\.(gif|jpg|jpeg|png|webp|bmp))$ https://urlOfYourFileserver.cz/images/$1 [P]
如果您的托管服务不支持apache mod_proxy,您必须使用转发
RewriteRule (.*\.(gif|jpg|jpeg|png|webp|bmp))$ https://urlOfYourFileserver.cz/images/$1 [R=301,L]
或者您可以使用php重定向或转发。
更多信息:https://httpd.apache.ac.cn/docs/2.4/rewrite/flags.html#flag_p
关于启用apache代理的信息:https://www.digitalocean.com/community/tutorials/how-to-use-apache-as-a-reverse-proxy-with-mod_proxy-on-ubuntu-16-04
设置
您必须在配置文件中设置选项,如下所示
FileManipulator:
url: 'http://urlOfYoursFileManipulatorServer.cz/'
username: 'yourUsernameToFileManipulatorServer'
password: 'yourPasswordToFileManipulatorServer'
保存、加载和删除图像
保存
要保存图像,您需要使用FileUploadHolder对象。您可以从FileManipulator中的工厂方法(createFileUploadHolder()
)获取此对象。
FileUploadHolder API
addFileUpload(FileUpload $file, string $filePath = null, bool $autogeneratePathPrefix = false)
- 添加单个文件。默认文件路径是其文件名。$filePath参数包含您希望保存文件的位置。如果将参数$autogeneratePathPrefix设置为true,则$filePath参数的前缀也将根据当前日期设置为/Y/m/d/
格式。
addMultipleFileUpload(array $files, bool $autogeneratePathPrefix = false)
- 将多个文件添加到内部数组中。默认文件路径是其文件名。如果将参数$autogeneratePathPrefix设置为true,则$filePath参数的前缀也将根据当前日期设置为/Y/m/d/
格式。
clear()
- 从FileUploadHolder实例中删除所有添加的文件。
当您填充FileUploadHolder时,您可以调用函数$returnedUrls = $this->fileManipulator->saveImages(FileUploadHolder $files)
,该函数返回上传图像的基础URL数组,因此$returnedUrls
中将包含["fileUrl1", "fileUrl2"]
,这与您在FileUploadHolder中指定的filePath兼容。
加载
如果您想要获取与原始图像不同大小的保存图像,则需要发送带有宽度或高度查询参数的查询参数(您可以使用一个或两个)。
如果您不使用PROXY,则需要将返回的URL与图像URL路径连接。
(示例:'https://< yourFileServerURL.xy >/images/< yourReturnedURL >').
示例
原始图像:$returnedUrls[$index]
宽度为250px的图像:$returnedUrls[$index] . '?width=250'
高度为500px的图像:$returnedUrls[$index] . '?height=500'
最大宽度为600px和最大高度为700px的图像:$returnedUrls[$index] . '?width=600&height=700'
删除
要删除图像,请调用函数$this->fileManipulator->deleteImages($returnedUrls)
。
复制
要复制图像,请调用函数$this->fileManipulator->copyImages($returnedUrls)
。
结论
此扩展需要Nette3.0,并且属于Miarra © 2021