Drupal 7 开发内部培训资料, 分头诗人

想用drupal组建个下载系统,求方案

赞成!
1
否决!

需求:

1.防盗链,为张三生成专属的临时下载路径(请求下载前在验证一下是不是张三,否则拒绝),1小时候临时下载路径自动失效;

2.权限可控制,对指定用户组成员提供下载权限(否则拒绝);

3.还没想好。。。

3 个回答

赞成!
0
否决!

顶一下这个, 同问

赞成!
0
否决!

同求

赞成!
0
否决!

防盗链 关键词是:Anti-Leech

apache、nginx、iis的设置可以实现简单的防盗链。这方面可以百度下。跟drupal没直接联系。

 

为张三生成专属的临时下载路径(请求下载前在验证一下是不是张三,否则拒绝),1小时候临时下载路径自动失效;权限可控制,对指定用户组成员提供下载权限(否则拒绝);

这个可以写一个模块叫download_file

download_file.info:

 

1
2
3
4
5
6
7
;$Id$
 
name = Download file
description = 猪跑啦.
core = 7.x
package = Drupalla
files[] = download_file.module

;dependencies[] = autoload ;php = 5.2

 

download_file.module:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function  download_file_menu() {
  // Admin settings for the site.
  $items['down/%'] = array(
    'title' => '下载文件',
    'description' => '下载文件啦。',
    'page callback' => 'download', //这是写一个下载函数function download()
    'page arguments' => array(1),
    'file' => 'download_file.pages.inc',
// 下面这个是自定义的权限函数function download_permission(),返回True 表示有权限,返回False 表示没权限
  'access callback' => 'download_permission',
    //'access arguments' => '',
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}
 
function download_permission(){//代码略}

download_file.pages.inc:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function download($fid){
   $result = "";
if($fid != '0'){
  $query = db_select('file_managed', 'f')
->fields('f', array('uri'))
->condition('f.fid', $fid)->execute()->fetchAssoc();
  $result = file_create_url($query['uri']);
}
if(preg_replace("/https?://([^/]+).*/i","\1",$HTTP_SERVER_VARS['HTTP_REFERER'])!=$HTTP_SERVER_VARS['HTTP_HOST'])
{ exit('启用防盗链机制,请重新进入下载页面... <a href="/down">点这里</a>'); }
//以上代码就判断是否是从下载页面进来的
if($result) {
$url = "./sites/default/files/";  //指定下载的目录
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$result);
readfile ($url.$result);
}
return $result;
}