欢迎各位兄弟 发布技术文章
这里的技术是共享的
在Drupal中,可以使用多种方式来上传和下载文件。在本章中,我们将讲述什么是公共和私有文件,以及如何提供它们,简要的介绍多媒体文件的处理,并学习一下Drupal的文件认证钩子。
老葛的Drupal培训班 Think in Drupal
Drupal提供了两种相互排斥的模式,用来管理文件下载的安全性:公共模式和私有模式。在私有模式下,在请求一个下载文件时将会检查用户的权限,如果用户不具有相应的访问权限,那么下载将被拒绝。在公共模式下,任何可以访问文件URL的用户都可以下载文件。这一设置将应用于整个站点,而不是应用于一个模块或者一个文件,所以通常在初始设立站点期间就做出选择,到底是使用私有模式还是使用公共模式,这一设置将会影响到使用了Drupal文件API的所有模块。
老葛的Drupal培训班 Think in Drupal
最简单的配置就是公共文件下载方法,此时Drupal不参与下载流程。在文件被上传时,Drupal简单的将它们保存到了你在“管理➤站点配置➤文件系统”中所指定的目录,并在数据库中追踪文件的URL(这样Drupal就知道有哪些文件可用,谁上传的,等等)。当一个文件被请求时,它将作为一个静态文件通过HTTP被Web服务器直接传递给用户, Drupal一点也没有参与这一流程。由于不需要执行PHP代码,所以这种方式的特点就是非常的快。然而,这里没有检查用户的权限。
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
如果提供了$dest参数,并且文件被移动到了它的最终位置,来代替原来的临时目录,那么调用者可以通过调用file_set_status(&$file, $status)将files表中纪录的状态修改为持久的,这里面$file被设置为一个完整的文件对象(如图13-7所示),$status被设置为FILE_STATUS_PERMANENT。依照includes/file.inc,如果你想在你的模块中使用额外的状态常量的话,那么你必须从256开始,因为0, 1, 2, 4, 8, 16, 32, 64, 和128是为核心保留的。
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班 Think in Drupal
老葛的Drupal培训班
老葛的Drupal培训班 Think in Drupal
如果提供了$dest参数,并且文件被移动到了它的最终位置,来代替原来的临时目录,那么调用者可以通过调用file_set_status(&$file, $status)将files表中纪录的状态修改为持久的,这里面$file被设置为一个完整的文件对象(如图13-7所示),$status被设置为FILE_STATUS_PERMANENT。依照includes/file.inc,如果你想在你的模块中使用额外的状态常量的话,那么你必须从256开始,因为0, 1, 2, 4, 8, 16, 32, 64, 和128是为核心保留的。
老葛的Drupal培训班 Think in Drupal