miarra/filemanipulator

库,用于访问文件服务器,可在https://bitbucket.org/miarra/fileserver.git找到

v4.1.2 2021-10-24 01:57 UTC

This package is auto-updated.

Last update: 2024-09-24 08:36:00 UTC


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