Attachments. Кодировка имени файла

  • 27 Ответов
  • 21890 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Привет всем. Joomla 1.5.13, Attachments Documentation V1.3.4. Всё работает, НО. На сервере (в папке Attachments) имена файлов неудобоваримые... типа 016_Распоряжение 15-1.pdf. Где то прочитал, что типа имена файлов должны быть на аглицком+цыфры...  crazy! Неужели правда !
Кто понял жизни смысл и толк, давно замкнулся и умолк.

Re: Attachments. Кодировка имени файла
« Ответ #1 : 22.09.2009, 16:14:13 »
Такое впечатление складывается, что на всех форумах по Joomla, все только и могут что тыкать ссылками на куцый FAQ. Где вы, мега-джумалоиды ?
Кто понял жизни смысл и толк, давно замкнулся и умолк.

*

beliyadm

  • ********
  • 8359
  • 1527
  • Севастополь == Россия
Re: Attachments. Кодировка имени файла
« Ответ #2 : 22.09.2009, 16:15:46 »
на 99% уверен что название файлов\каталогов должно быть на латиннице, переименовывайте и будет счастье

P.S. участвуйте в развитии FAQ (который кстати как написано не относится к вопросам по сторонним расширениям движка)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

Re: Attachments. Кодировка имени файла
« Ответ #3 : 23.09.2009, 09:44:48 »
Двоякое чувство у меня от Joomla. С одной стороны прекрасный инструмент! С другой стороны, убивает отсутствие очевидных вещей, что породило огромное количество всевозможных расширений. На данный момент нахожусь в очередном затыке, который похоже делит на 0 все усилия по изучению (в течении месяца) Joomla. Затык в распределении прав доступа юзеров к разделам/категориям/материалам. Неделю убил на JUGA(легаси, т.к. других не дают), взятой с http://www.dioscouri.com/. Не настраивается ! (( Вот где FAQи нужны !

p.s. А с кракозябрами в имени файла разобрался вот так. В файле components\com_attachments\helper.php после строки
$filename  = $_FILES['upload']['name'];
вставил
$filename = str_replace(array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь', 'ъ', 'ы', 'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ь', 'Ъ', 'Ы', 'Э', 'Ю', 'Я'), array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'x', 'c', 'ch', 'sh', 'sch', 'j', 'j', 'y', 'e', 'y', 'ja', 'A', 'B', 'V', 'G', 'D', 'E', 'Jo', 'Zh', 'Z', 'I', 'I', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'X', 'C', 'Ch', 'Sh', 'Sch', 'J', 'J', 'Y', 'E', 'Y', 'Ja'), $filename);
Через заднюю калитку - но работает. Можно добавить решение в FAQ.
Кто понял жизни смысл и толк, давно замкнулся и умолк.

*

InternetStranger

  • ***
  • 25
  • 4
  • Чёткий слонег)
Re: Attachments. Кодировка имени файла
« Ответ #4 : 26.09.2009, 21:26:59 »
Привет всем. Joomla 1.5.13, Attachments Documentation V1.3.4. Всё работает, НО. На сервере (в папке Attachments) имена файлов неудобоваримые... типа 016_Распоряжение 15-1.pdf. Где то прочитал, что типа имена файлов должны быть на аглицком+цыфры...  crazy! Неужели правда !

Друг! Не правда! И с русскими названиями файлов работает!
Беда не столько в Joomla, сколько в России как в таковой. Наша страна (вроде как) лидирует по количеству используемых кодировок. Ты конечно неплохое решение подобрал)
Лично я вот в качестве фтп-клиента использую FileZilla. У него опция замечательная есть: Кодировка UTF-8. Вуаля! Все по-человечески!
Вот интересно, если два экстрасенса одновременно начнут читать мысли друг друга, они умрут от переполнения стека?

*

mahp

  • ***
  • 127
  • 4
  • mahp
Re: Attachments. Кодировка имени файла
« Ответ #5 : 15.12.2009, 19:54:53 »
InternetStranger, ничё не понял. У меня на Денвере сайт и траблы с кодировкой аналогичные.
From Russia with love !
-=<< mahp >>=-

*

InternetStranger

  • ***
  • 25
  • 4
  • Чёткий слонег)
Re: Attachments. Кодировка имени файла
« Ответ #6 : 16.12.2009, 16:00:20 »
Поясняю: проблема в том, что Денвер твой (как я весь Виндоус в целом) работает в кодировке win1251.
А Joomla и Аттачментс в кодировке utf-8. Из-за несовпадения кодировок у тебя "кракозябры". И вовсе не обязательно на английском  имена создавать  - эти кракозябры отлично работают. Так что "проблемой" это сложно назвать, ведь все работает =))

Когда зальешь на удаленный хостинг свой сайт, используй файловый менеджер FileZilla . Он умеет отображать файлы и папки в кодировке utf8, что (при должной сноровке) избавит от "кракозябр".
Вот интересно, если два экстрасенса одновременно начнут читать мысли друг друга, они умрут от переполнения стека?

*

InternetStranger

  • ***
  • 25
  • 4
  • Чёткий слонег)
Re: Attachments. Кодировка имени файла
« Ответ #7 : 16.12.2009, 16:01:32 »
Кста, кто-то тут говорил , что и Total Commander тоже как-то переключается в utf8 ))
Вот интересно, если два экстрасенса одновременно начнут читать мысли друг друга, они умрут от переполнения стека?

*

mahp

  • ***
  • 127
  • 4
  • mahp
Re: Attachments. Кодировка имени файла
« Ответ #8 : 19.12.2009, 19:03:33 »
Дык Joomla в утф8 на Денвере работает и отлично!
Я файлы с русскими названиями на Денвере гружу и подцепляю к статьям. И на хост, как и многие, хочу выложить готовый сайт. Т.е. имена вдруг станут в нормальной русской кодировке после выгрузки ФайлЗиллой? С чего вдруг?
PS Кодировка сбилась после их прикрепления к статьям в штатном режиме  самим модулем Аттачментс.
From Russia with love !
-=<< mahp >>=-

*

InternetStranger

  • ***
  • 25
  • 4
  • Чёткий слонег)
Re: Attachments. Кодировка имени файла
« Ответ #9 : 26.12.2009, 03:52:43 »
имена вдруг станут в нормальной русской кодировке после выгрузки ФайлЗиллой? С чего вдруг?

В каком месте я написал что произойдет смена кодировки символов??
Чтобы решить проблему, нужно ее понять для начала. Боюсь вы не верно представляете себе что такое кодировка и как происходит кодирование символов.
Заглуглите ACSII и ANSI - коды и все станет понятнее.
(нужно просто посмотреть на эти символы через ту кодировку, в которой они были записаны)

зы: http://joomlaforum.ru/index.php/topic,79919.msg528252.html#msg528252
Вот интересно, если два экстрасенса одновременно начнут читать мысли друг друга, они умрут от переполнения стека?

*

apru

  • **
  • 10
  • 0
  • CCCP
Re: Attachments. Кодировка имени файла
« Ответ #10 : 01.06.2010, 21:22:25 »
mikolla
Спасибо! Хоть такой, но выход, а то разведут кодировки, фтп, у нас в стране 97проц на винде, и притачиваешь файлу не по фтп..

В файле components\com_attachments\helper.php, строка
if (JFile::upload($_FILES['upload']['tmp_name'], $filename_sys))
меняем на
if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys)))
у меня работает
« Последнее редактирование: 03.06.2010, 00:42:18 от apru »

*

jem777

  • *******
  • 1652
  • 116
Re: Attachments. Кодировка имени файла
« Ответ #11 : 19.11.2010, 22:27:53 »
В файле components\com_attachments\helper.php, строка
if (JFile::upload($_FILES['upload']['tmp_name'], $filename_sys))
меняем на
if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys)))
у меня работает

Спасибо помогло, но теперь удаление этого файла не срабатывает. Из базы удаляет, но файлы с сервера удалить уже не может.
Компонент версии 2.1.2

*

apru

  • **
  • 10
  • 0
  • CCCP
Re: Attachments. Кодировка имени файла
« Ответ #12 : 14.02.2011, 00:55:55 »
Помогите, кто решил проблему с русскими вложениями в attachments-2.2

Re: Attachments. Кодировка имени файла
« Ответ #13 : 04.06.2011, 12:16:36 »
Вроде у меня решилось на Joomla 1.5.22.
До этого при загрузке изображений терялись все русские буквы, просто пропадали навсегда )
Решение - открыл файл:
libraries\joomla\filesystem\file.php

нашел сии строки:
Код
	function makeSafe($file) {
$regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
return preg_replace($regex, '', $file);
}

Добавил пару своих строк, получилось так:
Код
	function makeSafe($file) {
$file = str_replace(array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь', 'ъ', 'ы', 'э', 'ю', 'я'), array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'x', 'c', 'ch', 'sh', 'sch', 'j', 'j', 'y', 'e', 'y', 'ja'), $file);
$file = str_replace(array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ь', 'Ъ', 'Ы', 'Э', 'Ю', 'Я'), array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'x', 'c', 'ch', 'sh', 'sch', 'j', 'j', 'y', 'e', 'y', 'ja'), $file);
$regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
return preg_replace($regex, '', $file);
}

И теперь он автоматом транслитерует все русские имена файлов. Правда я только на изображениях пробовал.


P.S. Правда это не помогло решить проблему в jSeblod CCK 1.8. Если загружать русские файлы через его формы то все не верно... где-то надо еще фиксить...

Re: Attachments. Кодировка имени файла
« Ответ #14 : 16.11.2011, 19:13:06 »
Проблема по прежнему актуальна. Решения указанные в теме не подошли. Joomla 1.7.2, attachments 3.0.2, везде кодировка utf-8, сервер на винде, соответсвенно пишет в абракадабре на диск, и в этой же абракадабре ссылку в базу. 

if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys))) сработал только для имени файла, записываемого на диск, пишет теперь нарусском языке, а вот ссылка http:/...... остается в какой попало кодировке. как бы и ее поменять?

*

MazdaY

  • ***
  • 56
  • 1
Re: Attachments. Кодировка имени файла
« Ответ #15 : 12.07.2012, 14:05:48 »
актуально для версии 3.0.2

Re: Attachments. Кодировка имени файла
« Ответ #16 : 18.10.2012, 20:22:25 »
Проблема по прежнему актуальна. Решения указанные в теме не подошли. Joomla 1.7.2, attachments 3.0.2, везде кодировка utf-8, сервер на винде, соответсвенно пишет в абракадабре на диск, и в этой же абракадабре ссылку в базу. 

if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys))) сработал только для имени файла, записываемого на диск, пишет теперь нарусском языке, а вот ссылка http:/...... остается в какой попало кодировке. как бы и ее поменять?

В файле \components\com_attachments\views\attachments\tmpl\default.php комментим строчку $url = utf8_encode($url);

Re: Attachments. Кодировка имени файла
« Ответ #17 : 11.11.2012, 18:08:41 »
attachments
«  : 09.11.2012, 18:34:56 »   Цитировать

у меня проблема. Установив этот компонент вставки у меня возникло куча ошибок. сначала русификатор не подошел потом сам компонент не устанавливался в конце концов и компонент и русификатор были установлены. настройки я сделала но попыталась создать материал и мне выдает ошибку..нигде в Google я такой ошибки не нашла ```
500 - Обнаружена ошибка.

Ошибка базы данных с номером 1146
Table 'galasayt.ru.c9f84_attachments' doesn't exist SQL=SELECT count(*) FROM c9f84_attachments WHERE parent_id=0 AND parent_type='com_content' AND access in (1,2,3) (ERR 90)

Вернуться в Панель управления
. если я удаляю этот компонент то попытавшись создать статью мне выдало все на иероглифах..не пойму что я повредила...помогите у меня Joomla 2.5.7

*

sashakee

  • **
  • 20
  • 0
Re: Attachments. Кодировка имени файла
« Ответ #18 : 29.12.2012, 17:08:17 »
Помогите, прочитал все темы с поиска так и не нашел ответ.
1.Когда нажимаю на скачку прикрепленного файла, он открывается в новом окне и закачки не происходит.
Как сделать чтобы файл сразу скачивался?
« Последнее редактирование: 29.12.2012, 18:08:53 от sashakee »

*

sashakee

  • **
  • 20
  • 0
Re: Attachments. Кодировка имени файла
« Ответ #19 : 29.12.2012, 21:09:07 »
Так что никто не знает? Я уже целый день сижу мучаюсь. Пробовал в файле file_types назначать
'txt' => 'application/x-zip'
'txt' => 'application/zip'
'txt' => 'application/txt'
'txt' => 'application/pdf'
Но безрезультатно

*

beliyadm

  • ********
  • 8359
  • 1527
  • Севастополь == Россия
Re: Attachments. Кодировка имени файла
« Ответ #20 : 01.01.2013, 06:42:43 »
что за тип файла?
В .htaccess добавить строку типа
Код: ini
AddType application/octet-stream .расширение
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

afikus

  • ***
  • 35
  • 2
Re: Attachments. Кодировка имени файла
« Ответ #21 : 11.03.2013, 01:01:36 »
Решение для Joomla 2.5 + attachments 3.0

В файле components\com_attachments\helper.php, строка
Код
if (JFile::upload($_FILES['upload']['tmp_name'], $filename_sys))
меняем на
Код
if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys)))

В файле \components\com_attachments\views\attachments\tmpl\default.php комментим строчку
Код
$url = utf8_encode($url);

Спасибо всем!  :D

Кроплю над http://info83.ru | Региональный сайт НАО
Студия веб-дизайна NAOSMART - http://naosmart.ru

*

ozmail

  • *
  • 3
  • 0
Re: Attachments. Кодировка имени файла
« Ответ #22 : 03.06.2013, 13:14:35 »
Решение для Joomla 2.5 + attachments 3.0

В файле components\com_attachments\helper.php, строка
Код
if (JFile::upload($_FILES['upload']['tmp_name'], $filename_sys))
меняем на
Код
if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys)))

В файле \components\com_attachments\views\attachments\tmpl\default.php комментим строчку
Код
$url = utf8_encode($url);

Спасибо всем!  :D



Спасибо. Работает. Но есть одно "Но".
Использую добавление вложений с самого сайта (необходимо для пользователей), не с админки.
Видимо вот эта строчка:
if (JFile::upload($_FILES['upload']['tmp_name'], iconv('UTF-8', 'cp1251', $filename_sys)))
отрабатывает след образом: файл из ['upload']['tmp_name'] загружается в iconv('UTF-8', 'cp1251', $filename_sys) в другой кодировке.
В $filename_sys прописан путь файла, выше в helper.php описано что создается сначала временная папка "0" при добавлении вложения. оттуда загружается в пусть $filename_sys. При смене кодировки файл загружается не в созданную папку с некоторым id. а в нулевую папку. а ссылка на файл создается на папку с некоторым id.

как то так вроде. поправьте меня. и помогите с проблемой пожалуйстаз. с программированием только на Вы. Мал мало могу поправить
« Последнее редактирование: 16.08.2013, 07:48:25 от ozmail »

*

ozmail

  • *
  • 3
  • 0
Re: Attachments. Кодировка имени файла
« Ответ #23 : 16.08.2013, 07:48:53 »
проблема актуальна

Re: Attachments. Кодировка имени файла
« Ответ #24 : 11.04.2015, 12:38:14 »
Здравствуйте все!

Я доработал этот плагин (Attachments). Теперь русские имена файлов не портятся, корректно удаляются с диска при удалении вложения,
работает проверка на дублирование при добавлении уже существующего файла - также как и для имен на латинице.

Окружение:
- Win 8.1 русский
- Joomla_3.4.1-Stable-Full_Package

Исправления:

1. В файле: components\com_attachments\helper.php

   - после строки:
         $filename_sys = $fullpath . $filename;
     Добавить:            
         $filename_sys_cp1251 = iconv('UTF-8', 'cp1251', $filename_sys) ;

   - строку :
      if (JFile::upload($_FILES['upload']['tmp_name'], $filename_sys))
   Заменить на :    
      if (JFile::upload($_FILES['upload']['tmp_name'], $filename_sys_cp1251))

       - строку :
      if ( ($save_type == 'upload') && JFile::exists($filename_sys) )
   заменить на
      if ( ($save_type == 'upload') && JFile::exists($filename_sys_cp1251) )

2.В файле: \components\com_attachments\views\attachments\tmpl\default.php
   комментим строчку:
          $url = utf8_encode($url);

3. В файле: components\com_attachments\controller.php

Строки:
   if ( $filename_sys ) {
                 jimport('joomla.filesystem.file');
         if ( JFile::exists( $filename_sys )) {    
            JFile::delete($filename_sys);
            }                
         }
Заменить на:
    if ( $filename_sys ) {
                  $filename_sys_cp1251 = iconv('UTF-8', 'cp1251', $filename_sys) ;    
         jimport('joomla.filesystem.file');
         if ( JFile::exists( $filename_sys_cp1251 )) {    
            JFile::delete($filename_sys_cp1251);
            }                
         }

« Последнее редактирование: 11.04.2015, 12:48:20 от nuriman »

Re: Attachments. Кодировка имени файла
« Ответ #25 : 13.05.2015, 11:26:08 »
День добрый.

С Attachments 2.2 по инструкции выше - все тоже работает.

Правда немного другие изменения. Благодарим тов. nuriman.
Спойлер
[свернуть]

Проверил. Все работает.
« Последнее редактирование: 13.05.2015, 11:29:13 от GoLeMjkeee »

Re: Attachments. Кодировка имени файла
« Ответ #26 : 14.05.2015, 11:41:50 »
Дополнение.
После изменений (attachments 2.2) при добавлении статьи через сайт выдает следующую ошибку:
Люди добрые, помогите доработать плагин.


*

jem777

  • *******
  • 1652
  • 116
Re: Attachments. Кодировка имени файла
« Ответ #27 : 15.02.2016, 14:19:42 »
Спойлер
[свернуть]
Спасибо дружище! Выручил с этой проблемой в кодировке. Она тянется с момента создания компонента.)

Модератору - большая просьба прикрепить эту тему наверху. Она пока постоянно всплывает из версии в версию.