kratelig

предупреждение при загрузке файла в ФМ

Рекомендуемые сообщения

kratelig    0

Всем привет. Есть ocshop  1.5.6.4. Проблема такая, при загрузке фото в стандартном файловом менеджере фотки с названием, которое уже есть, он его заменяет, на новое.  А можно сделать как-то, что бы предупреждал, или хотя бы дублировал? 

Все мои попытки шерстить код файлового менеджера не увенчались успехов. Чего-то подобного я тоже не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    154

Загрузка и проверка происходит в контроллере common/filemanager, который находится в файле admin/controller/common/filemanager.php, а именно в функции upload. Там же можно добавить проверку или переименование файла, если такой уже существует. Для примера приведу отрезки кода из этой функции с проверкой и переименованием:

if (!$this->user->hasPermission('modify', 'common/filemanager')) {
		$json['error'] = $this->language->get('error_permission');  
}

##############

// Вариант 1. Проверка
if(file_exists($directory . '/' . $filename)){
		$json['error'] = $this->language->get('error_file_exists'); // не забудьте добавить error_file_exists в языковой файл common/filemanager  
}

// Вариант 2. Переименование
if(file_exists($directory . '/' . $filename)){
	$counter = 1; //объявляем счетчик
	$info = pathinfo($filename); //разбираем название файла и расширение
	$new_filename = $info['filename'] . $counter . $info['extension']; //генерируем новое имя файла
	while(file_exists($directory . '/' . $new_filename)){ 
		$new_filename = $info['filename'] . $counter . $info['extension'];
		$counter++;
	}
	$filename = $new_filename;
}

##############

if (!isset($json['error'])) {	
	if (@move_uploaded_file($this->request->files['image']['tmp_name'], $directory . '/' . $filename)) {		
		$json['success'] = $this->language->get('text_uploaded');
	} else {
		$json['error'] = $this->language->get('error_uploaded');
	}
}

Код не проверял, но должен работать. И второй вариант будет работать на PHP 5.2 и старше т.к. filename pathinfo начала возвращать именно с этой версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
kratelig    0

Спасибо, прописал 1-ый вариант, добавил в языки, все пашет отлично. 2-ой не тестил.

Блин, вот это я велосипед там придумывал, а по факту 2 строчки кода)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу