flownative/resource-tools

资源导入和导出以及更多Flow工具

v2.1.0 2022-05-30 17:22 UTC

This package is auto-updated.

Last update: 2024-09-10 10:08:10 UTC


README

MIT license Packagist Maintenance level: Love

Flow框架和Neos CMS的资源导入和导出

Flownative Resource Tools是一个提供以下功能的包:

  • 一个简单的命令行工具,允许独立于使用的资源存储进行资源导出和导入
  • 针对特殊目的的多个资源目标和存储

安装

Flownative Resource Tools包通过Composer以常规Flow包的形式安装。对于现有项目,只需将`flownative/resource-tools`添加到您的Flow或Neos分布的依赖项中即可

    $ composer require flownative/resource-tools

使用方法

查看./flow help

资源目标和存储

NonPublishingProxyStorage

为另一个存储提供特殊包装,防止将导入到此存储的任何资源自动发布。请注意,您需要负责在应用程序中发布资源,如果您请求公开URI,它们将不会自动发布。因此,请勿将其用作默认存储,例如NeosCMS,因为它将无法处理未发布资源。请注意,运行./flow resource:publish将发布添加到此存储的集合中的资源,因此您应避免这样做。

配置选项

  • storageClass - 设置实际存储资源所用的类名。

  • storageOptions - 配置实际存储资源类的选项。

示例配置

Neos:
  Flow:
    resource:
      storages:
        specialNonPublishedStorage:
          storage: 'Flownative\ResourceTools\ResourceManagement\NonPublishingProxyStorage'
          storageOptions:
            storageClass: 'Neos\Flow\ResourceManagement\Storage\WritableFileSystemStorage'
            storageOptions:
              path: '%FLOW_PATH_DATA%Persistent/Resources/'

SaltedFileSystemSymlinkTarget

此目标与Flow \Neos\Flow\ResourceManagement\Target\FileSystemSymlinkTarget一样工作,但它生成一个盐化的散列,该散列无法通过知道文件来猜测。如果您允许匿名用户上传资源到您的系统,但又不想出于安全原因让他们猜测公开URI,这很有用。

配置选项

Flow FileSystemSymlinkTarget的所有选项

  • salt - 可选(将回退到Flow系统加密密钥) - 用于散列URI的盐。如果您运行多个服务器,请确保在每台服务器上设置此字符串相同,而不是依赖于加密密钥。理想情况下,将其设置为长随机生成的字符串。

示例配置

Neos:
  Flow:
    resource:
      targets:
        localWebDirectoryPersistentResourcesTarget:
          target: 'Flownative\ResourceTools\ResourceManagement\SaltedFileSystemSymlinkTarget'
          targetOptions:
            subdivideHashPathSegment: true
            # Optional salt
            salt: 'foobar'

DummyTarget

此目标通过简单地什么也不做来防止任何发布。从所有目的来看,它看起来像Flow中的常规目标,但它实际上不会使资源公开,请求一个URI将始终返回空字符串。没有配置选项

示例配置

Neos:
  Flow:
    resource:
      targets:
        dummyTarget:
          target: '\Flownative\ResourceTools\ResourceManagement\DummyTarget'
          targetOptions: []