SendIt - хук для перемещения загруженных файлов из временной папки в постоянную.
Приветствую, у многих возникают сложности с тем, чтобы сохранить файлы загруженные пользователем через форму, которую обрабатывает SendIt. Поэтому ловите пример хука, который перемещает файлы из папки по умолчанию в папку assets/userfiles/
<?php
$filelist = explode(',', $hook->getValue('filelist'));
if(empty($filelist)){
return true;
}
$fileLinks = [];
$basePath = $modx->getOption('base_path', '', MODX_BASE_PATH);
$assetsPath = $modx->getOption('assets_path');
$siteUrl = $modx->getOption('site_url');
$uploaddir = $modx->getOption('si_uploaddir', '', '[[+asseetsUrl]]components/sendit/uploaded_files/');
$uploaddir = str_replace('[[+asseetsUrl]]', $assetsPath, $uploaddir) . session_id() . '/';
$userFilePath = 'assets/userfiles/'. session_id() . '/';
if (!is_dir($basePath . $userFilePath)) {
mkdir($basePath . $userFilePath, 0777, true);
}
foreach($filelist as $filename){
$filePath = $basePath . $userFilePath . $filename;
if(copy($uploaddir . $filename, $filePath)){
$fileLinks[] = $siteUrl . $userFilePath . $filename;
}
}
$hook->setValue('file_links', $fileLinks);
return true;
Поблагодарить автора
Отправить деньги
Комментарии: 2
Артур, молодец! Очень нужное решение, я долго «выкладывал» свой код по такому же кейсу) Ты оказался быстрее, так держать!
Это было непросто, но я смог)))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.