Удаляем префикс к загружаемым на сервер файлам в DLE

Ставится данный хак очень просто, для этого потребуется отредактировать следующие файлы:
./engine/ajax/upload.php
./engine/inc/files.php

В файлах ./engine/ajax/upload.php и ./engine/inc/files.php
Ищем код:

$file_prefix = time() + rand( 1, 100 );
$file_prefix .= «_»;

и заменяем его на:

$file_prefix = »;


Если на Ваш сайт добавляют новости через программы AddNews и подобные, то на это место вставьте следующий код:

$file_prefix = ‘_’;

Дело в том, что данные программы видят только файлы с именами _filename.jpg
При желании можете написать адрес своего сайта, например:

$file_prefix = ‘site_ru_’;

Далее в файле ./engine/ajax/upload.php ищем:

$image_name = totranslit( implode( «.», $img_name_arr ) ) . «.» . $type;


Если ничего не найдено, пробуем так:

$image_name = totranslit( convert_unicode( implode( «.», $img_name_arr ), $config[‘charset’] )  ) . «.» . $type;


И заменяем на:

$image_name = totranslit( implode( «.», $img_name_arr ) );
$number = »;
while ( file_exists( $upload_path . $file_prefix . $image_name . $number . ‘.’ . $type ) ) {
$number = $number+1;
}
$image_name = totranslit( convert_unicode( implode( «.», $img_name_arr ), $config[‘charset’] )  ) . $number . ‘.’ . $type;

В файле ./engine/inc/files.php ищем:

$image_name = totranslit( implode( «.», $img_name_arr ) ) . «.» . $type;

И заменяем на:

$image_name = totranslit( implode( «.», $img_name_arr ) );
$number = »;
while ( file_exists( $config_path_image_upload . $file_prefix . $image_name . $number . ‘.’ . $type ) ) {
$number = $number+1;
}
$image_name =  $image_name . $number . ‘.’ . $type;

Данная строка встретится 2 раза, поэтому заменяйте её везде!

Далее ищем:

if( $serverfile == » ) {

И перед этим кодом вставляем:

$img_name_arr = explode( «.», $image_name );
$type = end( $img_name_arr );
$curr_key = key( $img_name_arr );
unset( $img_name_arr[$curr_key] );
$image_name = implode( «.», $img_name_arr );
$number = »;
while ( file_exists( ROOT_DIR . «/uploads/files/» . $file_prefix . $image_name . $number . ‘.’ . $type ) ) {
$number = $number+1;
}
$image_name =  $file_prefix . $image_name . $number . ‘.’ . $type;

Кому лень редактировать файлы выкладываю готовые файлы (для DLE 8.5): [attachment=3]

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

  1. Реально полезный хак, пользователям которые скачивают мои файлы думаю будет удобнее =)

  2. Вы вообще тестируете???
    Вообще на первый взгляд всё работает, НО!!!! если вы загрузили картинку простой загрузкой, а потом под этим же именем загружаете картинку через флеш мультизагрузчик, выпадает ошибка и нечего далее негрузит!!!!

    Вот флеш дебуггер выдаёт такой еррор:
    Error #2044: Unhandled IOErrorEvent:. text=Error #2038: File I/O Error.

  3. Tomaas,
    Если будете общаться со всеми в такой форме, то не ждите ни от кого взаимной вежливости.
    Откройте яндекс и почитайте что у Вас за ошибка. Если не произвести некоторые изменения в файле upload.php, то загрузчик просто напишет что файл уже существует (ошибка 500) и дальше все прекрасно грузит.

    В файле upload.php замените

    $config_path_image_upload

    на

    $upload_path

    На сторонних ресурсах админы исправят это не скоро.

  4. Ничего плохого неимел, просто удивлиают мениа лиуди которые выкладывают хацк недоработов его… Сам постоянно поправалиаю, чиутли не каздый новый хацк… а про бацкдоорсы и кодировку кода вообше молчиу… Хацк кстати очен даже полезный на мой взглиад!

  5. Tomaas,
    А меня удивляют люди, которые поставив мод или хак пишут что ничего не работает, не ставьте его ни в коем случае! Я бы не дублировал сообщения, по 2 раза тоже отвечать не буду acute
    И не важно красиво код выглядит или нет, DLE все равно превратит табуляторы в пробелы.
    Не знаю что вам там не нравится с кодировкой, convert_unicode стандартная функция движка.
    Авторы для этого и выкладывают свои наработки, чтобы в них нашли баги.
    Я бы не говорил что это баг, а просто не доработка, т.к. сам мультизагрузкой почти не пользуюсь. В таком случае можно было вежливо попросить меня доработать хак.

  6. И баг-фикс к данному хаку.
    В случае использования префикс хак не работает, т.к. имя файла по инструкции выше сверяется БЕЗ учёта префикса.
    В приведённом в посте коде перед:

    . $image_name . $number . '.' . $type ) ) {


    Добавить:

    . $file_prefix

  7. хех а в массовой загрузке, у картинок префикс не изменеется как исправить?

  8. lex111,
    По вашему префикс должен как-то изменяться?
    Не путайте префикс (до имени файла) и суффикс (после имени).

    С массовой загрузкой все в порядке, если файл уже существует, то префикс добавляется.
    Если Вы нашли мой мод на каком-либо другом сайте — это Ваши проблемы, т.к. на них как раз версия со всеми возможными багами negative

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

  10. timur22,
    В файле ./engine/inc/files.php ищем:

    $image_name = $image_name . $number . '.' . $type;

    if( $serverfile == '' ) {


    Заменяем на:

    $image_name = $file_prefix . $image_name . $number . '.' . $type;

    if( $serverfile == '' ) {


    Инструкции и измененные файлы для DLE 8.5 исправил.

  11. в files.php ставлю $file_prefix = '[site.ru]'; и уже тупо отображает тока ссылку а не картинку а если ставлю $file_prefix = 'site.ru_'; то всё норм Не подскажете как скобки квадратные потсавить ТАк красивее ^^

  12. [img]http://whymax.ru/uploads/posts/2010-07/[site.ru]filename.gif[/img]

    С квадратными скобками ничего не выйдет, DLE не парсит BB тег.

  13. а сейчас при загрузке файла появляется номер_site_имяфайла НЕльзя как нить убрать этот номер? и ещё вопросик а какой должен быть путь у загружаемого файла(не картинка) в новости?

  14. Незнаю а каком номере идет речь, данный мод как раз убирает этот префикс.
    Читайте описание или используйте готовые файлы, никаких лишних префиксов нет!

    Вопрос насчет пути не понял, файлы загружаются в папку ./uplodas/files/ префикс такой же, как и у изображений.

  15. Проблема при установке…. Пишу в асю, мне автор не отвечает. 🙁
    Моя ася 545894. автор отпишись.

  16. Виця:),
    Пишите в комментариях или в обратную связь, в ICQ сейчас бываю редко, да и антиспам никого не пропускает.

  17. Подскажите как быть с 9 версией при массовой загрузки все работает, но если пробывать загрузить стандартно префиксы добавляются все равно.

  18. odine,
    извините, порно ссылкам тут не место.

    В версии 9.2 и 9.3 проверил, все работает (см. изменения в коде), возможно Вы не везде заменили код.

  19. В версии 9.2 и 9.3 проверил, все работает


    Обновился с 9,2 до 9,4, переустановил ваш замечательный модуль, но образовалась маленькая проблема:

    а так же будет проверять существует ли файл с таким же именем в этой же папке и в этом случае добавит к нему суффикс 1,2,3 и т.д.


    при повторении имени файла происходит ошибка загрузки


    В файле ./engine/inc/files.php ищем:
    $image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;
    Данная строка встретится 2 раза, поэтому заменяйте её везде!


    Второй раз эта строка в 9,4 выглядит по другому.

  20. Styv,
    По Вашей ссылке одна из старых версий моего хака.
    Во всех версиях он работать не будет, в DLE очень часто делают какие-то изменения в файлах, отвечающих за загрузку.
    Я уже давно подзабил на DLE, постараюсь обновить в ближайшее время.

  21. В DLE-9.6 вообще таких строк для исправления не нашел.Может что подскажите.До версии 9.2 проблем не было.
    Спасибо !

  22. Отличный хак, только хотелось бы, чтобы вместо kak_prekratit_otnosheniya1.jpg
    было
    kak_prekratit_otnosheniya_1.jpg

  23. Приветствую.
    Чет я запутался немного.
    Подскажите, как добавить название сайта к загружаемым файлам, при этом удалить стандартную приставку.

    DLE 8.5

    С Уважением. Заранее спасибо

    Разобрался.
    Спасибо за хак

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *