Функции для работы с файлами
Загрузка файла на сервер для modx
<?php
function uploadFile($file){
$max_size = $this->modx->config['uploadFile']* 1024; # допустимый размер
$ext_array = explode(',',$this->modx->getOption('upload_extension', null, '')); # допустимые расширения
# создать уникальный путь для этого вида представления
$uploadpath = 'assets/upload/'.$this->object->createdby.'/';
# получить полный путь к уникальной папке
$target_path = $this->modx->config['base_path'] . $uploadpath;
# получить загруженные имена файлов:
$submittedfiles = array_keys($_FILES);
# цикл по файлам
foreach ($submittedfiles as $sf) {
# Получить файла и убедиться, что его хорошо.
$filename = basename( $_FILES[$sf]['name'] );
if(empty($filename)) {
return $this->error('buorder_error_form_file_size');
}
# проверяем размер
$sld_file_size = filesize($_FILES[$sf]['tmp_name']);
if ($sld_file_size > $max_size) {
return $this->error('buorder_error_form_file_size');
}
// Получить расширение файла
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$ext = mb_strtolower($ext); // без учета регистра
// это имя файла пустым (без файла загружены)
if($filename == '') {
return $this->error('buorder_error_form_problem');
}
// это правильный тип файла?
if(!in_array($ext, $ext_array)) {
return $this->error('buorder_error_form_problem');
}
// очистить имя файла и сделать уникальным
$filename = $counter . '.' . $ext;
$filename = str_replace(' ', '_', $filename); // пространства к подчеркивания
$filename = date("Y-m-d_G-i-s_") . $filename; // Дата & время добавить
// полный путь к новому файлу
$myTarget = $target_path . $filename;
# создать каталог, чтобы переместить файл, если он не существует
if(!file_exists($target_path)) {
if (!mkdir($target_path, 0755, true)) {
return $this->error('buorder_error_form_dir');
}
}
// является файл перемещается в соответствующей папке успешно?
if(move_uploaded_file($_FILES[$sf]['tmp_name'], $myTarget)) {
$myFile = $uploadpath . $filename;
if (!chmod($myTarget, 0644)) { /* some debug function*/ }
} else {
return $this->error('buorder_error_form_dir');
}
}
if(!empty($filename)) {
$this->object->files = $uploadpath.$filename;
}
}
Сканирует указанную папку
<?php
function myscandir($dir)
{
$list = scandir($dir);
unset($list[0],$list[1]);
return array_values($list);
}
$dir = '/assets/';
$data = myscandir($dir); // array
Удаляет файл и папки в указанной директории
<?php
// требуется myscandir
function clear_dir($dir)
{
$list = myscandir($dir);
foreach ($list as $file)
{
if (is_dir($dir.$file))
{
clear_dir($dir.$file.'/');
rmdir($dir.$file);
}
else
{
unlink($dir.$file);
}
}
}
чистить директорию и все вложенные папки и файлы
<?php
function clear_dir($dir = ''){
$handle = opendir($dir);
while(false !== ($folder = readdir($handle))){
if ($folder == '.' or $folder == '..') continue;
if (is_dir($dir.$folder)){
$this->clear_dir($dir.$folder."/");
rmdir($dir.$folder);
}
if (is_file($dir.$folder)){
unlink($dir.$folder);
}
}
closedir($handle);
}
31 августа 2018, 15:00 1530
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()