跳转到主要内容

PloneFilesZip提供了一种工具,允许用户将文件夹(递归)中的所有文件下载到ZIP归档中

项目描述

Ingeniweb团队。

关于

为文件夹(以及文件夹式内容)添加了一个文档操作,允许用户将存档中基于archetypes的内容的所有文件和图像下载到ZIP文件中。

可选地,用户可以从ZIP文件中获取提供文件的内容的DC元数据(XML-RDF格式)。

ZIP归档内部结构

ZIP归档中的所有文件都记录在路径中

[rel_path "/"] content_id "/" field_id "/" file_name

ZIP归档中的所有DC元数据都记录在路径中

[rel_path "/"] content_id ".rdf"

使用

  • rel_path – 包含内容对象的文件夹式内容的相对路径。

  • content_id – 拥有FileField或ImageField的内容的ID。

  • field_id – FileField或ImageField的名称。

  • file_name – 原始文件名(如字段中记录的)。如果原始文件名没有扩展名,则提供扩展名。

需求

  • Plone 2.0.5或Plone 2.1+

  • Archetypes 1.3.3+

  • 任何具有FileField、ImageField或AttachmentField的AT基于内容类型。(ATContenTypes可以完成这项工作)

可选产品

  • ATContentTypes 0.2+,在Plone 2.0.x上

  • AttachmentField 1.3+和基于AttachmentField的内容类型,如PloneExFile

  • LinguaPlone 0.7+。如果检测到LinguaPlone,则用户将从首选语言的内容中下载文件。

警告

FileSystemStorage用户必须升级到2005/10/20之后的版本。

配置

使用常规快速安装程序安装PloneZipFiles后,您必须打开ZMI中的portal_fileszip工具并按照“概览”选项卡中的说明进行操作。

您还可以从“PloneFilesZip 设置”控制面板进行配置。

自定义

自定义字段

您可以创建并注册自己的检索器来自定义字段。查看 retrivers.py 了解我们如何处理 FileFields、ImageFields 和 AttachmentFields。

基本上,您只需要提供一个实现‘IFileRetriever’的类,并按如下方式注册:

try:
    from Products.PloneZipFiles import HAS_PLONE_FILES_ZIP
except ImportError, e:
    HAS_PLONE_FILES_ZIP = False
...
if HAS_PLONE_FILES_ZIP:
    from Products.PloneZipFiles.interfaces import IFieldRetriever
    from Products.PloneZipFiles.registry import GlobalRegistry

    class MyFieldRetriever:

        __implements__ = Products.IFieldRetriever

        field_type = 'my_field'

        def __init__(self, field, content):
            ...

        def fileName(self):
            ...

        def mimeType(self):
            ...

        def fileBody(self):
            ...

    GlobalRegistry.register(MyFieldRetriever)

查看‘interfaces.py’获取有关方法签名和文档的详细信息。

自定义类型

大多数基于 AT 的内容不需要为 PloneFilesZip 提供特定的支持。无论如何,如果您的内容类型不支持标准 AT 架构接口(这意味着‘your_content.Schema().fields()’不提供所有字段),则您的代码必须包括并注册一个自定义类型检索器,如下所示:

try:
    from Products.PloneZipFiles import HAS_PLONE_FILES_ZIP
except ImportError, e:
    HAS_PLONE_FILES_ZIP = False
...
if HAS_PLONE_FILES_ZIP:
    from Products.PloneZipFiles.interfaces import ITypeRetriever
    from Products.PloneZipFiles.registry import GlobalRegistry

    class MyTypeRetriever:

        __implements__ = Products.ITypeRetriever

        meta_type = 'my_type'

      def __init__(self, content):
          ...

      def getFieldRetrievers(self):
          ...

    GlobalRegistry.register(MyFieldRetriever)

查看‘interfaces.py’获取有关方法签名和文档的详细信息。

您可以在最新的 PloneArticle 产品中找到类型检索器的示例。

自定义内部结构策略

您可以自定义文件在 zip 存档中组织的方式。

您必须实现并注册一个实现 getZipFilePath 方法的 ZipStructurePolicy 类,该方法从文档容器路径、文件名和字段路径构建内部文件路径

container_path 是存储文件的 plone 文档的绝对路径 field_path 是文件字段在文档对象中的相对路径

您将在您的产品中包含一个类似于以下内容的 plone zip 策略模块

from Products.PloneFilesZip.interfaces import IZipStructurePolicy
from Products.PloneFilesZip.policies import AbstractZipStructurePolicy, PolicyRegistry

class MyZipStructurePolicy(AbstractZipStructurePolicy):
    '''
        The inner structure of the zip file
        corresponds to the inner structure of the objects.
    '''

    __implements__ = (IZipStructurePolicy,)

    id = 'my_policy_id'
    label = "Policy title"
    label_msgid = 'my_policy_title_i18n_msgid'
    help = "Policy help text"
    help_msgid = "my_policy_help_i18n_msgid"


    def getZipFilePath(self,
                    container_path=None,
                    file_name=None,
                    field_path=None,):
        ...

PolicyRegistry.registerPolicy(MyZipStructurePolicy)

查看‘interfaces.py’获取有关方法签名和文档的详细信息。

测试

请阅读 .../PloneFilesZipe/tests/README.txt

下载

Products.PloneFilesZip 添加到您的 Zope 实例的 eggs 列表中。

支持

请通过 Ingeniweb 支持 发送邮件。

欢迎对新功能请求捐赠。

致谢

反馈

欢迎贡献

  • 报告其他文件类型字段和存储的成功/问题(请在错误报告提供配置信息、测试用例和回溯)。

  • 为您的母语提供翻译。

变更日志

主干

  • Eggification [glenfant]

  • Plone 3 支持 [glenfant]

1.1.0RC2 - 2007/02/02

  • 修复文件检索中的错误。在创建 BaseUnit 时附加 arg (full=True),以确保我们获取整个文件而不是块文件(clebeaupin)

  • 修复 DeepZipStructurePolicy:getZipFilePath 中的错误(在方法上添加 **kwargs)(clebeaupin)

1.1.0RC1 - 2007/02/01

  • 添加策略 ContentZipStructurePolicy

  • 关于新策略,如果文件在同一个内部存档目录中重复,则将重命名文件

  • 添加策略来管理 zip 结构。策略可以在配置中配置

1.0.0 - 2006/10/16

  • 添加了配置

1.0.0RC1 - 2006/09/24

  • 首次公开发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

Products.PloneFilesZip-1.2.0b1.tar.gz (134.3 kB 查看哈希值)

上传时间 源代码

支持者