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’获取有关方法签名和文档的详细信息。
版权和许可证
版权 (c) 2006 Ingeniweb SAS
此软件受 GNU 通用公共许可证第 2.0 版 (GPL) 的规定。此分发应附有 GPL 的副本。本软件按“原样”提供,且不提供任何明示或暗示的保证,包括但不限于标题保证、可销售性保证、不侵权保证和适用于特定目的的适用性保证
请参阅随此产品提供的 .../PloneFilesZip/LICENSE 文件。
测试
请阅读 .../PloneFilesZipe/tests/README.txt
下载
将 Products.PloneFilesZip 添加到您的 Zope 实例的 eggs 列表中。
支持
请通过 Ingeniweb 支持 发送邮件。
欢迎对新功能请求捐赠。
致谢
Gilles Lenfant,主要开发者
Arthur Albano,巴西-葡萄牙语翻译
Thomas Desvenain,策略开发者
反馈
欢迎贡献
报告其他文件类型字段和存储的成功/问题(请在错误报告提供配置信息、测试用例和回溯)。
为您的母语提供翻译。
变更日志
主干
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e0b638d23d9cce76f56da8ecc0f522459664d35be95cefe065a5e96fed0f961 |
|
MD5 | cc001f02f4a31fc0f64f296b8a541119 |
|
BLAKE2b-256 | 5250ccee03a008c96c7eb25b65e921e452877d28fc64ac743f01f7bd6320ee38 |