2015-04-05 2 views
0

Моя цель - установить текущий каталог загрузки, когда инициализируется elFinder. Например, моя ссылка «Загрузить файлы» имеет желаемый рабочий каталог, который генерируется динамически. Как передать каталог в elFinder?elFinder: Установить текущий каталог загрузки

ответ

1

Да, я хочу, чтобы получить хэш динамически.

Как насчет этого.

$encode_func = function ($path, $root) { 
    $p = $path == $root ? '' : substr($path, strlen($root)+1) 
    if ($p === '') { 
     $p = DIRECTORY_SEPARATOR; 
    } 
    $hash = $this->crypt($p); 
    $hash = strtr(base64_encode($hash), '+/=', '-_.'); 
    $hash = rtrim($hash, '.'); 
    return $hash; 
}; 
$id = '[uniqueId]_'; You must set same id into root option 
$root = realpath('../image/data/'); 
$path = realpath('../image/data/product'); 
$hash = $id.$encode($path, $root); 
$url_hash = '#elf_'.$hash; 
2

elFinder 2.1 может открываться напрямую в любую папку с хешем URL.

ex.

+0

Спасибо. Еще один вопрос - как генерировать хэш? Можете ли вы привести пример? Скажем, у меня есть в connector.php \t 'path' => '../image/data/' и 'URL' => '../image/data/', и вам нужно открыть ../image/data/product/ – ymakux

+0

Пожалуйста, войдите в свой elFinder через веб-браузер и измените cwd на «продукт», затем проверьте строку местоположения. Или вы хотите динамически получать хеш? –

+0

Да, я хочу динамически получать хеш. – ymakux

0

Что-то простое, основанное на классе nao-pon и elfinder.

Шаг 1: // в php make hash из вашего пути к файлу, например. имя_директории ("корень/изображения/iphone/iphone-6S.jpg"). Это в основном только base64_encode

function elfinder_hash_path($path) 
{ 
     if ($path == '') 
      $path = DIRECTORY_SEPARATOR; 
     $hash = substr($path, strlen("root-name")+1); 
     // hash is used as id in HTML that means it must contain vaild chars 
     // make base64 html safe and append prefix in begining 
     $hash = strtr(base64_encode($hash), '+/=', '-_.'); 
     // remove dots '.' at the end, before it was '=' in base64 
     $hash = rtrim($hash, '.'); 
     // append volume id to make hash unique 
     return "l1_". $hash; 
} 

«l1» автоматический объем идентификатор в elfinder для первой локальной файловой системы. В противном случае вы можете установить идентификатор тома в настройках connector.php "ID" => "MyId",

Шаг 2: Если вы звоните elfinder окна из JS, то после инициализации elfinder, связывают elfinder OnLoad события прыгать в каталог, который вы хотите. В этом случае сохраняется в хэшировании переменной JS, полученной с php.

var elf = $('#elfinder').elfinder({ 
    url : 'elfinder/php/connector.php', // connector URL (REQUIRED) 
    lang: 'sk', 
    height: okno_vyska 
}).elfinder('instance'); 

elf.bind('load', function(event) { elf.exec('open', hasher); }); 

Update:
elf.exec («открытый», мясорубка) не работает, если хэшируются суб-подкаталог еще не был открыт в этом Js сессии, таким образом, это не в кэше и elfinder ничего не делает.
Временное решение: либо использовать
window.location.hash = hasher;
или обновления последнего использованного каталога в локальном хранилище перед эльфом INIT

localStorage.setItem('elfinder-lastdirelfinder', hasher); 
Смежные вопросы