elfinder - копировать жесткие ссылки

Мы перемещаем много больших файлов, и это работает безупречно, потому что это делается в экземпляре без копирования файла. (просто двигая указатель)

Но иногда нам нужен доступ к одному и тому же файлу из нескольких мест в файловой системе, сегодня мы копируем файл, но это занимает очень много времени и занимает много памяти, это ожидаемо, поскольку файл копируется в другое место на диске. Так что нам не на что жаловаться :)

Но в нашем рабочем процессе нам на самом деле не нужно иметь несколько файлов, достаточно нескольких указателей на один и тот же файл. Поэтому модель с жесткими ссылками — идеальный выбор для нас. Это было бы чрезвычайно полезно, если бы можно было изменить поведение функции копирования в elfinder. Кто-нибудь знает, возможно ли это. ? :)


person puertorico    schedule 08.12.2016    source источник


Ответы (1)


Это стало возможным благодаря расширению класса elFinderVolumeLocalFileSystem.

class elFinderVolumeMyLocalFileSystem extends elFinderVolumeLocalFileSystem
{
    protected function _copy($source, $targetDir, $name) {
        $target = $this->_joinPath($targetDir, $name);
        if (! $ret = link($source, $target)) {
            return parent::_copy($source, $targetDir, $name);
        }
        return $ret;
    }
}

$opts = array(
    'locale' => '',
    'roots'  => array(
        array(
            'driver' => 'MyLocalFileSystem',
            'path'   => '/path/to/files/',
            'URL'    => 'http://localhost/to/files/'
        )
    )
);

// run elFinder
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();
person nao-pon    schedule 09.12.2016