EZ Publish/EZ Publish WebDAV
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
webdav简介[ ]
- WebDAV 是"Web-based Distributed Authoring and Versioning"(基于Web 的分布式认证与版本控制)的缩写(在一种基于RFC2518 的开放标准)。WebDAV 是一组针对HTTP 协议的扩展,它允许用户协同编辑和管理网站服务器上的文件。
- 这可以通过使用一个兼容WebDAV 的客户端来完成。例如,可以使用最近的KDE 版本中的Konqueror 或微软的Internet Explorer。通过使用兼容WebDAV 的客户端,用户可以连接到网站服务器并可以浏览和管理文件,如同使用一个网络文件夹或者FTP 服务器。换言之,这个协议所允许用户对Web 服务器上的文件和目录进行浏览,创建,删除,上传,下载,重命名等操作。
eZ Publish 与WebDAV
- 从3.2 版本开始,eZ Publish 提供了一个内建的WebDAV 服务器。这个实现允许用户通过兼容WebDAV 的客户端与eZ Publish 通讯。一旦建立连接,就可以浏览和管理站点的节点树。节点树会被显示为一个文件系统(由目录和文件构成)。
- 当用户第一次连接到eZ Publish 的WebDAV 服务器,系统会显示一个兼容WebDAV 的站点入口列表。这个列表可以在"site.ini"重设文件中"[SiteSettings]"章节下的"SiteList[]"中配置。请注意,此时系统还不会要求您输入用户名和密码。换言之,任何可以访问网络的用户都可以看到这些可用的站点入口。下图演示了两个站点入口的WebDAV 界面,"example"和"plain_user"。
当选中一个站点入口,系统会提示输入用户名和密码。参阅下图。
提供的用户名和密码必须属于一个存在于选择的站点入口中的有效eZ Publish 用户。此外,用户必须有足够的权限才可以看到节点树的内容。下图演示了在一个WebDAV 客户端中显示了名称为"plain_user"的eZ Publish 站点入口的根节点的内容。
如上图所示,用户可以浏览和管理"Content"和"Media"顶极节点的内容。下图演示了用户在"Content"顶极节点中浏览了若干节点后的页面。
浏览和下载
默认情况下,所有的节点都被显示为目录。这是因为在eZ Publish 中任何对象都可以以子节点的形式存在于其它节点下。将节点显示为目录允许用户浏览节点树的结构。但是并不是所有的节点都被显示为目录。
那些包含文件数据类型的对象的节点会被显示为其所在目录中的文件。这意味着使用图片,媒体或文件数据类型的节点会被显示为文件。当下载这些节点时,eZ Publish 会把节点中的文件属性所包含的文件发送给用户。如果节点中有多个文件类型的属性,第一个属性中的文件会被传送给用户。
"webdav.ini"重设文件中的"FolderClasses[]"可以用来配置哪些类型的节点在WebDAV 客户端中应该被显示为目录。默认的配置确保“文件夹”类型的节点总是被显示为目录。如果把某个包含文件数据类型的类添加到"FolderClases[]"中,会重设上述的行为。换言之,尽管某些节点包含文件数据类型,这个配置还是可以把这些节点显示为目录。
上传
任何类型的文件都可以被上传至eZ Publish。文件会被保存为文件类的对象。换言之,每次上传一个文件,eZ Publish 会创建一个文件对象,它的文件属性会包含这个上传的文件。此外,在文件上传的位置,一个节点会被创建。这是系统默认的行文。但是,并非所有的文件都会被创建为文件对象。
可以配置系统,从而系统可以根据上传的文件类型创建不同类型的对象。例如,默认的配置确保上传的图片被创建为图片对象。这种行为是由MIME 类型和类的映射来控制的。映射可以通过"upload.ini"重设文件中"CreateSettings"章节下的"MimeClassMap[]"来配置。"DefaultClass"配置确定如果没有合适的匹配,哪个类应该被用作默认类。这个选项通常被设置为"file",这意味着系统不识别的类型会被创建为文件对象。
下例演示了默认的映射。
MimeClassMap[] MimeClassMap[image]=image MimeClassMap[video/quicktime]=quicktime MimeClassMap[video/x-msvideo]=windows_media MimeClassMap[video/vnd.rn-realvideo]=real_video MimeClassMap[application/vnd.rn-realmedia]=real_video MimeClassMap[application/x-shockwave-flash]=flash
"MimeClassMap[]"中的每个单元必须通过另外一个配置块来进一步配置。这个配置块揭示了被映射的类的细节。这个配置块必须包含以下信息:
• 目标类的类标识符(后面追加"_ClassSettings"后缀)。
• 用于保存文件的类属性标识符。
• 用于保存文件名的类属性标识符。
• 对象名模式
下例演示了默认的图片类映射配置块。
[image_ClassSettings] FileAttribute=image NameAttribute=name NamePattern=<original_filename_base>
上例告知eZ Publish 当图片被上传,实际的文件数据会被保存在"image"属性中。图片的名称会被保存在"name"属性中("name"为属性的标识符)。"NamePattern"告知系统应该如何生成上传图片的名称。它可以包含文本和特殊字符(由尖括号环绕"<"和">")。下表揭示了可以使用的标签。
自定义上传处理器
可以通过使用自定义的上传处理器来对上传的文件做特殊处理。自定义的上传处理器必须被包含在扩展中。当某种特殊类型的文件被上传后,处理器必须被自动触发。这可以通过"upload.ini"重设文件中"[CreateSettings]"章节下的"MimeUploadHandlerMap[]"来配置。例如,以下的配置会确保所有上传的图片(无论为何种类型的图片)都会被"ezimageuploadhandler.php"中定义的"ezimageuploadhandler"类来处理。
MimeUploadHandlerMap[image]=ezimageuploadhandler
也可以配置某些特定类型的文件被这个上传处理器处理。下例演示了如何配置只处理JPEG 图片。
MimeUploadHandlerMap[image/jpeg]=ezimageuploadhandler
上传处理器本身必须被放置在扩展中名称为"uploadhandlers"的目录中,如下:
eZ Publish | -extensions | -example | -uploadhandlers | -ezimageuploadhandler.php
以下代码演示了一个自定义上传处理器的框架。
include_once( 'kernel/classes/ezcontentuploadhandler.php' ); class eZExampleUploadHandler extends eZContentUploadHandler { function eZExampleUploadHandler() { $this->eZContentUploadHandler( 'Example file handling', 'example' ); } /*! Handles the uploading of example files. */ function handleFile( &$upload, &$result, $filePath, $originalFilename, $mimeInfo, $location, $existingNode ) { // Implement your import/conversion routine here copy( $filepath, "var/cache/example.jpeg" ); } }
webdav配置[ ]
本小节了如何将eZ Publish 配置为WebDAV 服务器。请注意DNS 与Web 服务器也需要被配置。
- 第一步:启用WebDAV 服务器
WebDAV 的主开关必须被打开。为"webdav.ini"创建一个全局的重设文件并确保它包含以下内容:
[GeneralSettings] EnableWebDAV=true
- 第二步:添加需要的站点入口
为了允许WebDAV 访问特定的站点入口,站点入口的名称必须在"site.ini"重设文件"[SiteSettings]"章节中的"SiteList[]"中配置。确保"site.ini"的全局重设文件包括必要的配置。下例演示了如何为"plain_user"和"example"站点入口启用WebDAV。
[SiteSettings] SiteList[] SiteList[]=plain_user SiteList[]=example
- 第三步:清除所有的缓存
至此,eZ Publish 部分的配置就完成了。现在清除所有的缓存以确保系统使用最新的配置。
- 第四步:设置DNS 记录
设置用于访问WebDAV 的DNS 记录(例如:子域名)。这些记录必须指向web 服务器的IP 地址。例如,如果您通过"www.example.com"访问web 页面,应该为WebDAV 配置"webdav.example.com"。
- 第五步:配置web 服务器
在eZ Publish 根目录中有一个文件"webdav.php"。这个文件提供了真正的WebDAV 界面。每次当一个WebDAV 客户端给服务器发送一条命令时,web 服务器必须都自动执行这个文件。以下内容演示了如何在Apache 配置文件中配置WebDAV。
<Virtualhost 128.39.140.28> <Directory /path/to/ezpublish> Options FollowSymLinks Indexes ExecCGI AllowOverride None </Directory> DocumentRoot /path/to/ezpublish RewriteEngine On RewriteRule . /webdav.php ServerAdmin admin@example.com ServerName webdav.example.com </VirtualHost>
注意:确保您在virtual hosts 定义之前有一条"NamedVirtualHost"记录。
- 第六步:测试
启动一个兼容WebDAV 的客户端/应用程序并尝试连接服务器。
最近版本的Microsoft Internet Explorer (6.0.2800.1106 或更新的版本)包含一个内建的WebDAV 客户端。目标地址必须以web 文件夹方式打开。
1. 启动Internet Explorer
2. 访问“文件”菜单,然后选择“打开”,系统会显示一个对话框。
3. 在对话框的地址栏中输入WebDAV 服务器的地址,在最后追加一个"#",例如:http://webdav.example.com/#
4. 确保勾选“以web 文件夹方式打开”复选框。
5. 点击确定。您应该可以可用的站点入口以目录的形式显示出来。
KDE/Konqueror 确保有最新版本的Konqueror(3.1.3 或更高版本)。打开Konqueror 窗口并通过访问WebDAV 的URL,例如:"http://webdav.example.com/",来浏览WebDAV 服务器。