Элемент "file upload" + имя пользователя

  • 19 Ответов
  • 3661 Просмотров

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

*

tlsea

Здравствуйте!
есть проблема
    -Сделал форму для загрузки файла на сайт в папку /upload/имя_пользователя
    -Создал элемент "file upload" в Upload Directory указал /upload/{$my->name}
Fabrik 2.0
Доступ к форме таблице и элементам для зарегистрированных пользователей

папка {$my->name} не создается все падает в upload хотя регистрация проходит 100%,
{$my->id} выдает 0 как будто не пользователь не зареген. :(

...и еще в форме {$my->name} выводится нормально
...опытным путём выяснилось что включенном AJAX upload папка {$my->name} не создается
...обновил элемент, терь с включенным AJAX работает!
...но все файлы (точнее те что имеют название на кирилице) на сервак попадают с именами типа  _________________.pdf
« Последнее редактирование: 21.06.2012, 18:58:02 от tlsea »

*

ovenm

  • ***
  • 101
  • [+]3 / [-]0
  • Мы все сможем, если захотим
Re: Элемент "file upload" + имя пользователя
« Ответ #1 : 22.06.2012, 13:44:19 »
Я тожу с этим  возился. Нужна транслитерация в латиницу

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #2 : 22.06.2012, 13:56:30 »
вот нашел где переименовывается
/components/com_fabrik/plugins/element/fabrikfileupload/adaptors/filesystemstorage.php

    $filename_o = preg_replace( '#[^a-zA-Z0-9_\-\.]#', '_', $filename);

сделал чтоб в форме имя файла (с включенным AJAX Upload) сохранялось на русском,
но на сервак файл попадает с исправленным/изковерканнным именем (похоже апач бьет кодировку)
.htaccess c CharsetDisable on  и  CharsetRecodeMultipartForms Off не помогли

*

ovenm

  • ***
  • 101
  • [+]3 / [-]0
  • Мы все сможем, если захотим
Re: Элемент "file upload" + имя пользователя
« Ответ #3 : 22.06.2012, 15:34:39 »
utf 8 надобно везде, чтоб было

сравни код со своим, может поможет

function createFolder($path)
   {
      if (JFolder::create($path)) {
         return $this->createIndexFile($path);
      }
      return false;
   }

   function clean($path)
   {
      return JPath::clean($path);
   }

   function cleanName($filename, $repeatCounter)
   {
      // replace any non-alnum chars (except _ and - and .) with _
      $filename_o = preg_replace( '#[^a-zA-Z0-9_\-\.]#', '_', $filename);
      // $$$peamak: add random filename
      $params =& $this->getParams();
      if ($params->get('random_filename') == 1) {
         $length = $params->get('length_random_filename');
         $key = "";
         $possible = "0123456789bcdfghjkmnpqrstvwxyzBCDFGHJKLMNPQRTVWXYZ";
         $i = 0;
         while ($i < $length) {
            $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
            $key .= $char;
            $i++;
         }
         $file_e = JFile::getExt($filename_o);
         $file_f = preg_replace('/.'.$file_e.'$/', '', $filename_o);
         $filename = $file_f.'_'.$key.'.'.$file_e;
      } else {
         $filename = $filename_o;
      }
      return $filename;
   }
« Последнее редактирование: 22.06.2012, 15:44:46 от ovenm »

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #4 : 27.06.2012, 16:46:02 »
Еще вопрос про File upload:
    Как сделать кликабельным название файла при включенном AJAX (опция Link to file = Да не помогает)

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #5 : 30.06.2012, 19:38:59 »
Еще вопрос про File upload:
    Как сделать кликабельным название файла при включенном AJAX (опция Link to file = Да не помогает)
Где не кликабельно? В списке или в форме?

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #6 : 03.07.2012, 20:19:57 »
не кликабельно в форме вот тут >>


*Сори большая картинка получилась

И еще замечен глюк: если в списке (в форме) уже есть файлы (например 3) то еще один не прикрепляется  >:(
« Последнее редактирование: 03.07.2012, 20:49:52 от tlsea »

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #7 : 04.07.2012, 00:42:46 »
Делаем такой хак:

в файле \plugins\fabrik_element\fileupload\fileupload.js

находим

var filename = new Element('div', {
       'class' : 'plupload_file_name'
}).adopt([ new Element('span').set('text', file.name ), new Element('div', {
       'class' : 'plupload_resize',
       style : 'display:none'
}).adopt(a) ]);


меняем на

var filename = new Element('div', {
        'class' : 'plupload_file_name'
}).adopt([ new Element('a',{'href' : file.url, 'class' : 'plupload_file_url' }).set('text', file.name), new Element('div', {
        'class' : 'plupload_resize',
        style : 'display:none'
}).adopt(a) ]);

в файле \plugins\fabrik_element\fileupload\lib\plupload\css\plupload.queue.css

добавляем

a.plupload_file_url {
    background: none !important;
}


или копируем прикрепленные файлы в соответствующие папки ..
(zip распаковываем предварительно)

[вложение удалено Администратором]

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #8 : 04.07.2012, 00:46:27 »
И еще замечен глюк: если в списке (в форме) уже есть файлы (например 3) то еще один не прикрепляется  >:(

В настройках элемента правим Max files на необходимое кол-во.

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #9 : 04.07.2012, 20:08:10 »
Спасибо тебе, добрый человек, за хак!

ЗЫ: Я как выяснилось не в ту сторону вообще копал :)

Видимо хак был для другой версии потому как у меня названия и расположения фалов немного отличались :)

Рискуя показаться наглым, но 4-ый файл не прикрепляется все равно при макс файлс = 10 (Run times   = html5 )
« Последнее редактирование: 04.07.2012, 20:14:19 от tlsea »

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #10 : 04.07.2012, 20:31:49 »
Рискуя показаться наглым, но 4-ый файл не прикрепляется все равно при макс файлс = 10 (Run times   = html5 )
А какое нибудь сообщение есть по поводу "не прикрепления"?

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #11 : 05.07.2012, 11:20:38 »
никакой реакции от браузера (опытным путём замечено что файлы прикрепляются до тех пор пока не зарыта форма, после повторного открытия формы с прикрепленными файлами/ом файл не прикрепляется)

и еще одна проблемка - после хака файлы из списка формы по нажатию зелёной галочки перестали удалятся (та же картинка сверху)

 :(
« Последнее редактирование: 05.07.2012, 14:35:56 от tlsea »

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #12 : 05.07.2012, 16:14:53 »
никакой реакции от браузера (опытным путём замечено что файлы прикрепляются до тех пор пока не зарыта форма, после повторного открытия формы с прикрепленными файлами/ом файл не прикрепляется)

и еще одна проблемка - после хака файлы из списка формы по нажатию зелёной галочки перестали удалятся (та же картинка сверху)

 :(

посмотрю сегодня... этот AJAX upload у них сыроватый еще ... 

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #13 : 05.07.2012, 20:49:20 »
спасибо за помощь в любом случае  :D

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #14 : 06.07.2012, 01:50:52 »
 ^-^
Держи!
Вернул span.

var filename = new Element('div', {
                  'class' : 'plupload_file_name'
               }).adopt([ new Element('span').adopt(new Element('a',{'href' : file.url, 'class' : 'plupload_file_url' }).set('text', file.name)), new Element('div', {
                  'class' : 'plupload_resize',
                  style : 'display:none'
               }).adopt(a) ]);

Пока разбирался, обнаружил еще проблему -
если удалить из списка еще не загруженные файлы - остается активной кнопка - start upload ...
И при сохранении формы - просит сохранить файлы которых в списке нет ..

P.S. В архиве два файла


[вложение удалено Администратором]
« Последнее редактирование: 06.07.2012, 01:55:27 от pirks »

*

tlsea

Re: Элемент "file upload" + имя пользователя
« Ответ #15 : 06.07.2012, 12:02:58 »
Спасибо!  :D Приятно иметь дело с профи!

*

pirks

Re: Элемент "file upload" + имя пользователя
« Ответ #16 : 06.07.2012, 13:39:36 »
С кнопкой Start Upload разобрался, но остался такой баг:

Если добавить файл в список и нажать Start Upload, а потом удалить его из списка и сохранить форму, то файл удаляется,
но при открытии формы мы видим его в списке, и ссылку на файл которого нет.
Если удалить файл из списка, до его загрузки, то,  все ОК.

Следы ведут в fileupload.php ...


*

Gorilla

Re: Элемент "file upload" + имя пользователя
« Ответ #17 : 02.03.2016, 13:10:10 »
Спасибо большое, за некоторые решения, очень помогли, хотя все равно, не совсем то что хотелось. Удалось сделать так чтобы запись происходила в папку автора, в которой автоматически создается папка с датой загрузки и уже в нее записываются все файлы загрузки  yes! Но также хотелось решить еще одну проблему, например, если я как редактор захожу под своим логином и паролем и удаляю файлы, а потом записываю (использую id), то они записываются в папку с моим id, а хотелось бы чтобы в папку именно автора.

Может кто знает как решить другие проблемы при загрузке файлов, если добавлять zip файлы то невозможно добавить zip файл более 1 Мб, как сделать больше, в php.ini и в настройках медиа менеджера стоит 20Мб? Также проблема с удалением, если удаляю запись, то файлы в папке, а также пути в базе данных  все равно остаются, как это можно исправить?
« Последнее редактирование: 02.03.2016, 21:40:26 от Gorilla »

*

Gorilla

Re: Элемент "file upload" + имя пользователя
« Ответ #18 : 03.03.2016, 14:40:57 »
Удалось решить проблему с zip архивами (можно загружать любого размера, лишь бы почта позволяла столько отсылать и памяти хватало). Осталось проблема записи в нужную папку при редактировании редактором и почему не удаляются файлы с сервера и в базе данных. Вроде и людей много кто работал в этом компоненте и никто ничего не пишет

*

Gorilla

Re: Элемент "file upload" + имя пользователя
« Ответ #19 : 03.03.2016, 22:52:16 »
Проблема с удалением файлов решена