You are here

用于下载的认证钩子

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-20 15:49

 

模块开发者可以通过实现hook_file_download(),来设置私有文件下载的访问权限。该钩子用于判定在什么条件下才把文件发送给浏览器,并为Drupal返回附加头部以追加到文件HTTP请求上。注意,如果你的Drupal安装使用的是公共文件下载设置,那么该钩子将不起任何作用。图13-10显示了下载流程的概览,这里以用户模块里面的hook_file_download()实现为例。
    由于对于每次下载,Drupal将触发所有实现了hook_file_download()钩子的模块,所以指定你钩子的范围就非常重要了。例如,以user_file_download()为例,只有当要下载的文件位于pictures目录时才响应文件下载。如果为真的话,它把头部信息添加到请求中。
 
function user_file_download($file) {
    $picture_path = variable_get('user_picture_path', 'pictures');
    if (strpos($file, $picture_path .'/picture-') === 0) {
        $info = image_get_info(file_create_path($file));
        return array('Content-type: '. $info['mime_type']);
    }
}
 
13-10.私有文件下载请求的生命周期
 
    如果请求被许可了,那么hook_file_download()实现就应该返回一个包含头部信息的数组;否则,返回-1表示拒绝了文件下载。如果没有模块响应这个钩子,那么Drupal将向浏览器返回一个404未找到错误信息。

老葛的Drupal培训班 Think in Drupal

Drupal版本: