DLE-Infa.RU Регистрация Статистика Контакты Сервис
«    Май 2012    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
ajax, css, dle, free, green, info, news, pr, release, sms, url, user, wap, альбом, английский, баг, блок, загрузка, запрет, изображения, категории, комментарии, кэш, модуль, новости, новость, ошибка, переходы, подсказки, пользователи, релиз, смарт, спам, тиц, файлы, фото, хак, чпу, шаблон, шаблоны
Качественный и дешевый VDS / VPS хостинг
 Наш архив:
Апрель 2011 (1)
Январь 2011 (8)
Декабрь 2010 (7)
Ноябрь 2010 (3)
Октябрь 2010 (12)
Сентябрь 2010 (4)
   
Навигация по сайту
   
 

Изменение названий загружаемых картинок и файлов

 

Сегодня нужно было загрузить порядка 30 изображений, все бы было хорошо, но имена у этих картинок были все разные и не красивые. И как Вы уже понял мне нужно было их переименовать, для решения этой проблемы было 2 способа: Первый из них, это потратить кучу времени переименновывая все изображения вручную, а второй - это подправить код движка так, чтобы все происходило автоматически при загрузки их на сервер, что я собственно и сделал. Решил поделится, вдруг кому пригодится :-)

Установка хака переименования загруженных файлов и картинок:

  1. Открываем engine/ajax/upload.php
    • Находим:
      $image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] )  ) . "." . $type;
    • Заменяем на:
      $imagename = totranslit( trim( htmlspecialchars( strip_tags( convert_unicode( $_POST['imagename'], $config['charset'] ) ) ) ) );

      if ( $imagename != '' ) $image_name = $imagename . '.' . $type;
      else $image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] ) ) . "." . $type;
  2. Открываем engine\inc\files.php
    • Находим:
      $imageurl = trim( htmlspecialchars( strip_tags( $_POST['imageurl'] ) ) );
    • Ниже вставляем:
      $imagename = totranslit( trim( htmlspecialchars( strip_tags( $_POST['imagename'] ) ) ) );
    • Находим 2 раза:
                  if( $image_name != "" ) {
                      
                      $curr_key = key( $img_name_arr );
                      unset( $img_name_arr[$curr_key] );
                      $image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;
                  }
    • Заменяем на:
                  if ( $imagename != '' ) $image_name = $imagename . '.' . $type;
                  elseif ( $image_name != '' )
                  {
                      $curr_key = key( $img_name_arr );
                      unset( $img_name_arr[$curr_key] );
                      $image_name = totranslit( implode( '.', $img_name_arr ) ) . '.' . $type;
                  }
    • Находим:
      <div>{$lang['upload_t_size']}&nbsp;<input class="edit bk" type="text" name="t_size" id="t_size" size=9 value="{$config['max_image']}">&nbsp;px&nbsp;<select name="t_seite" id="t_seite"><option value="0" {$t_seite_selected[0]}>{$lang['upload_t_seite_1']}</option><option value="1" {$t_seite_selected[1]}>{$lang['upload_t_seite_2']}</option><option value="2" {$t_seite_selected[2]}>{$lang['upload_t_seite_3']}</option></select></div>
    • Ниже вставляем:
      <div>Изменить имя файла на:&nbsp;<input class="edit bk" type="text" name="imagename" size="55" /></div>
  3. Вот и все. Данный хак, действует как при массовой, так и при обычной загрузки.

 
 
  Автор: Брупт (DLE-Infa.Ru)
Категории новости: Хаки
Ключевые слова новости: хак, dle, изображения, фотографии
 
 
 
 
 
   
 

#1 Автор комментария: SEOshnik Дата написания комментария: 3 января 2011 03:32
 


Дата рег.: 3.01.2011
Комментариев: 12
Публикаций: 0
А можно пример, как он переименовывает? Так сказать до и после... smile

P.S. а чего енто аватар в комментах увеличивается до 119px? Некрасиво же? Вот в профиле нормально.

цитировать
 

#2 Автор комментария: Брупт Дата написания комментария: 3 января 2011 21:12
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Если картинки с непонятными названиями, например: htmd.jpg, 4Hd3r.jpg, 4893kd.png и т.д. то при их загрузки они будут иметь название:

дата_htmd.jpg, дата_4Hd3r.jpg, дата_4893kd.png и т.д.

А благодаря этому хаку можно ввести в поле любое название, например foto и все изображения при загрузки на сервер, будут иметь имя: дата_foto.jpg, что намного лучше.

P.S. Если сделать меньше, то название группы к которой относится пользователь будет длиннее, чем сам аватр, будет вообще не красиво )

цитировать
 

#3 Автор комментария: SEOshnik Дата написания комментария: 4 января 2011 00:10
 


Дата рег.: 3.01.2011
Комментариев: 12
Публикаций: 0
1). А дата она как, посекундная? Например если я загружаю за 1 минуту несколько изображений.

2). Чтобы заменять оригинальные названия картинок на свои, типа (foto/image), где что нужно заменить?

3). Возможно ли вместо вставки перед именем "дата" сделать случайную генерацию не повторяющихся символов в 5-8 знаков, типа как пароли генерируют? belay

цитировать
 

#4 Автор комментария: Брупт Дата написания комментария: 4 января 2011 15:55
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
1. Дата будет иметь стандартный вид, например: 1288570566

2. После установки хака, в окне загрузки изображений появится специальное поле, в которое можно ввести любое название.

3. Можно, только на мой взгляд это лишнее и есть вероятность повторения названий, поэтому лучше оставить как есть.

цитировать
 

#5 Автор комментария: SEOshnik Дата написания комментария: 5 января 2011 01:58
 


Дата рег.: 3.01.2011
Комментариев: 12
Публикаций: 0
Цитата: Брупт
можно ввести любое название.

Русский поддерживает или только транслит?

цитировать
 

#6 Автор комментария: Брупт Дата написания комментария: 5 января 2011 15:56
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Можно ввести и на русском. Скрипт автоматически сделает транслит.

цитировать
 

#7 Автор комментария: SEOshnik Дата написания комментария: 5 января 2011 21:35
 


Дата рег.: 3.01.2011
Комментариев: 12
Публикаций: 0
В 8.5 вместо этого кода:

<div>{$lang['upload_t_size']} <input class="edit" type="text" name="t_size" id="t_size" size=9 value="{$config['max_image']}"> px <select name="t_seite" id="t_seite"><option value="0" {$t_seite_selected[0]}>{$lang['upload_t_seite_1']}</option><option value="1" {$t_seite_selected[1]}>{$lang['upload_t_seite_2']}</option><option value="2" {$t_seite_selected[2]}>{$lang['upload_t_seite_3']}</option></select></div>

вот этот
<div>{$lang['upload_t_size']} <input class="edit bk" type="text" name="t_size" id="t_size" size=9 value="{$config['max_image']}"> px <select name="t_seite" id="t_seite"><option value="0" {$t_seite_selected[0]}>{$lang['upload_t_seite_1']}</option><option value="1" {$t_seite_selected[1]}>{$lang['upload_t_seite_2']}</option><option value="2" {$t_seite_selected[2]}>{$lang['upload_t_seite_3']}</option></select></div>


Установил, только вот что это за даты такие 1294253599 ? Что-то другое можно поставить?

цитировать
 

#8 Автор комментария: Брупт Дата написания комментария: 5 января 2011 22:46
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Это стандартный функционал DLE, к хаку отношения не имеет. Сделано для того чтобы не случилось совпадение названий загруженных изображений.

Можно поменять или удалить в файле engine/inc/files.php строчка
$file_prefix = time() + rand( 1, 100 );


P.S. Код в новости поправил

цитировать
 

#9 Автор комментария: Александр Дата написания комментария: 6 апреля 2011 22:22
 


Дата рег.: --
Комментариев: 0
Публикаций: 0
А как сделать, чтобы не нужно было каждый раз писать название желаемое? мне например нужно чтобы название сайта добавлялось ну и время.

Сделал так:

Вместо:
$imagename = totranslit( trim( htmlspecialchars( strip_tags( $_POST['imagename'] ) ) ) );


Вставил:
$imagename = "адрес сайта";


Работает, ну и конечно в engine/ajax/upload.php ничего не вносил, вроде все правильно сделал? ничего лишнего не нужно убрать?

цитировать
 

#10 Автор комментария: Брупт Дата написания комментария: 8 апреля 2011 15:05
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
В engine/ajax/upload.php

Найти:
$image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] ) ) . "." . $type;


Заменить:
$image_name = 'Адрес сайта.' . $type;


В engine\inc\files.php

Найти:
if( $image_name != "" ) {

$curr_key = key( $img_name_arr );
unset( $img_name_arr[$curr_key] );
$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;
}


Заменить на:
$image_name = 'Адрес сайта.' . $type;


P.S. В конце адреса сайта точка обязательна )

цитировать
 

#11 Автор комментария: Serg Дата написания комментария: 20 сентября 2011 20:58
 


Дата рег.: --
Комментариев: 0
Публикаций: 0
Спасибо автору. Хороший и нужный хак.

цитировать
 

#12 Автор комментария: corke Дата написания комментария: 21 сентября 2011 00:16
 


Дата рег.: --
Комментариев: 0
Публикаций: 0
Как сделать, чтобы при массовой загрузке в конце переименованного файла добавляло цифру (порядковый номер)? А то при массовой загрузке переименовывание не работает.

цитировать
 

#13 Автор комментария: Брупт Дата написания комментария: 12 октября 2011 18:18
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Если выполнили 1 пункт, то переименование при массовой загрузки должно работать.

Порядковый номер просто так не добавить, нужно javascript править )

цитировать
 

Добавление комментария
 
Ваше Имя:
Ваш E-Mail:
Включите эту картинку для отображения кода безопасности
обновить, если не виден код

 
 
 
Популярные новости
Copyright© DLE-Infa group (DLE-Infa.RU) 2009-2011 Все права защищены. Копирование и использование каких либо материала на сайте разрешено только с прямой ссылкой на dle-infa.ru