代码之家  ›  专栏  ›  技术社区  ›  gautamlakum

在cakephp中下载上传文件时如何检查会话?

  •  0
  • gautamlakum  · 技术社区  · 15 年前

    帮助我。如何检查会话是否存在? 我正在/app/webroot/documents/users/path中上载文件。

    生成的下载链接如下: http://localhost/my_project/documents/users/TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx.jpg

    3 回复  |  直到 15 年前
        1
  •  0
  •   Abba Bryant    15 年前

    最简单的方法是使用AuthComponent进行身份验证,使用MediaView处理页面上“下载此文件”链接的下载提示。

    举个例子。

    class SomeController extends AppController {
        ...
        public $components = array(
            'Auth' => array(
                ... auth settings ...
            ),
            ...
        );
    
        public function download( ){
            $this->view = 'Media';
            $this->set( array(
              'id' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx.jpg',
              'name' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx',
              'download' => true,
              'extension' => 'jpg',
              'path' => join( DS, array(
                  APP, 'webroot', 'documents', 'users', ''
              ))
            ));
        }
    

        public function download( ){
            if( $this->Auth->user( )){
                $this->view = 'Media';
                $this->set( array(
                  'id' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx.jpg',
                  'name' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx',
                  'download' => true,
                  'extension' => 'jpg',
                  'path' => join( DS, array(
                      APP, 'webroot', 'documents', 'users', ''
                  ))
                ));
            } else {
                ... do something else here ...
            }
        }
    

    几个注意事项:

    我在join(DS,array('path','parts','')调用的末尾使用一个空数组条目来获取路径所需的尾部斜杠。你想怎么做就怎么做-我喜欢在构建重复的字符串或路径时加入自己。

    http://book.cakephp.org/view/489/Media-Views
    http://book.cakephp.org/view/563/Setting-Auth-Component-Variables

        2
  •  0
  •   Travis Leleu    15 年前

        3
  •  0
  •   chustar    15 年前

    在这种情况下,您可以让控制器在启用下载之前检查会话变量。
    如果您使用的是会话组件,则可以使用以下方式在“用户”操作中检查用户的状态:

    if($this->Session->read('Auth.User.id'))
    {
    //download file
    }