0

我想在上传期间调整不同的图像大小,而不是 200x100。但是,我找不到任何相关文件来进行此调整。

经过一番搜索,我看到多人告诉其他人查看connector.php。在这个文件中,我需要传递以下内容:

$opts = array(
            'bind' => array(
                'upload resize' => array($this, 'myResize')
            ),
            'roots' => array(
                array(...)
            )
        );

/**
     * Upload/resize callback catcher, resizes image to 320x240px/240x320px respectively, keeps ratio
     *
     * @param  string   $cmd       command name
     * @param  array    $result    command result
     * @param  array    $args      command arguments from client
     * @param  object   $elfinder  elFinder instance
     * @return true     Forces elFinder to sync all events
     * */
    public function myResize($cmd, $result, $args, $elfinder) {
        $files = $result['added'];
        foreach ($files as $file) {
            $arg = array(
                'target' => $file['hash'],
                'width' => 320,
                'height' => 320,
                'x' => 0,
                'y' => 0,
                'mode' => 'propresize',
                'degree' => 0
            );
            $elfinder->exec('resize', $arg);
        }

        return true;
    }

我的大问题是:

我在哪里放置这个功能?我正在为 Symfony2 使用 (FM)ElfinderBundle。

4

1 回答 1

1

有两种方法可以解决这个问题。

  1. 将您的函数 (myResize) 放在 connector.php 中:

    公共函数 myResze($cmd, $result, $args, $elfinder)
    {
      //其他代码
    }
    

然后将“绑定”设置为:

'bind' => array(
    'upload resize' => 'myResize');
  1. 在connector.php 中定义你的类并获得一个在'bind' 中使用的实例。例子 :
    类名
    {
       // 其他代码

       公共函数 myResize($cmd, $result, $args, $elfinder)
       {
         // 其他代码
       }
    }

从此类创建对象后:

$obj = new className();

然后将“绑定”设置为此:

'bind' => array(
    'upload resize' => array($obj, 'myResize'));

这个例子对你有用:https ://github.com/Studio-42/elFinder/wiki/Logging

于 2015-03-09T08:30:58.927 回答