[FileAttach] Загрузка файлов на сайт во frontend

Начиная с версии 1.0.6 дополнения FileAttach появилась возможность использовать функционал дополнения на лицевой части сайта. На самом деле, с некоторыми оговорками, компонент и ранее можно было приспособить, но теперь добавилось несколько приспособлений.

Для демонстрации возможностей вы можете ознакомиться из примера, скачав по ссылке. Распакуйте архив на сайте, задайте права группе пользователя и авторизуйтесь на сайте.

Обращение к функциях дополнения производится через соединитель (connector), которому в аргументах задается параметр, указывающий на нужную функцию (processor). Результат работы возвращается в формате JSON, потому для удобства обработки результатов вам потребуется реализовать обвязку на Javascript.

Предполагается, что во frontend пользователь будет в основном выполнять выгрузку файлов на сервер, при этом для управления используя три функции:
  • выгрузка файлов на сервер
  • скачивание файлов с сервера
  • получение списка присоединенных файлов к заданному ресурсу
  • удаление присоединенных файлов у заданного ресурса
Тонкая настройка состояний объектов доступна только в административной части сайта, такая как переключение режима доступа, просмотр статистики скачиваний, переименовывание.

Пример вызова получения списка присоединенных файлов:
Через метод GET обращаемся по адресу: mysite.ru/assets/components/fileattach/connector.php?action=web/getlist&ctx=web&docid=100

Здесь параметры означают:
  • action = вызов процессора web/getlist
  • ctx = выполнение в контексте web
  • docid = у ресурса с идентификатором 100
Выгрузка файлов
Выполняется запросом методом POST к процессору mgr/upload с типом кодирования формы multipart/form-data. Параметрами надо указать ctx, docid, file.
Процессор ответит в формате JSON, сообщив о результате и списке принятых файлов:
{«success»:true,«total»:«1»,«results»:[{«id»:37,«fid»:«pPSVL79cTgCSkU5yoArcPBkNPfbsCLq1»,«name»:«price.xls»}]}

Необходимый набор разрешений:
Во-первых нужно предоставить доступ для медиа-источника с разрешением на «create». Затем надо включить разрешение на «file_upload» из шаблона AdminTemplate. Соответствующие политики назначьте группе пользователя для контекста web или того, который используется на лицевой части сайта.

Скачивание файлов
Выполняется запросом к процессору web/download. Параметрами надо указать ctx, fid (строковой идентификатор записи файла).

Необходимый набор разрешений:
Для скачивания надо разрешить «fileattach.download».
Есть две политики, которыми можно разрешить скачивание, первая это «File Attach Download» предназначенная только для скачивания, и «File Attach Frontend» для разрешения работы во frontend.
Назначьте одну из них для группы пользователя в контексте web.

Список файлов
Выполняется запросом к процессору web/getlist. Параметрами надо указать ctx, docid.
Процессор ответит в формате JSON, сообщив о результате и списке файлов:
{«success»:true,«total»:«1»,«results»:[{«id»:38,«name»:«servicing.xlsx»,«fid»:«pPSVL79cTgCSkU5yoArcPBkNPfbsCLq1»,«hash»:«a24c27a4edd12c9809a7f948c0322d8aa14f68c8»}]}

Удаление файлов
Выполняется запросом к процессору web/remove. Параметрами надо указать ctx, docid, список идентификаторов файлов ids в формате JSON.

Необходимый набор разрешений:
Для доступа к удалению надо разрешить «fileattach.remove».
При этом допускается удаление своих файлов, соответствующих указанному ресурсу. Чтобы позволить удалять не только свои файлы надо включить так же и «fileattach.totallist».
Виталий Чекрыжев
25 февраля 2016, 19:10
modx.pro
2
12 871
+3

Комментарии: 115

Алексей Федоров
25 февраля 2016, 23:02
0
Рад, что компонент развивается. Очень удобно пользоваться таблицей файлов в админке, система шифрования закрытых файлов немного удивила, поскольку файл из Doc1.docx превращался во что-то типа X465VMijhrre97nvxwej причем без расширения, но к этому можно привыкнуть)
Был момент с получением доступа ко всем файлам (даже закрытым) перебором id. Это по прежнему возможно? Вместо id можно как-то проставить hash? Пока пользуюсь забугорским загрузчиком, он значительно проигрывает в удобстве предоставления информации, но при этом в ссылке нет id — превращает хэширует имя файла и директорию. Плюс есть разграничение доступа по группам, не, чтобы часто используется, но иногда полезно. Очень надеюсь, что подобное появится в FileAttach, поскольку с точки зрения менеджера сайта он на порядок приятнее и комфортнее в использовании.
    Виталий Чекрыжев
    27 февраля 2016, 00:08
    +2
    Благодарю за дельный комментарий.
    В обновленной версии 1.0.7 больше нет возможности скачивания файлов через перебор цифрового идентификатора, отныне обращение производится через уникальный строковой идентификатор.
    Так же появилась возможность регулирования отображения списка ссылок в сниппете через группы.
      Алексей Федоров
      27 февраля 2016, 08:40
      0
      Спасибо! Через пару дней с удовольствием протестирую.
      Сергей Шлоков
      27 февраля 2016, 09:30
      0
      система шифрования закрытых файлов немного удивила, поскольку файл из Doc1.docx превращался во что-то типа X465VMijhrre97nvxwej причем без расширения
      Да, прозрачнее наверно было бы делать так X465VMijhrre97nvxwej_Doc1.docx или так Doc1.docx.X465VMijhrre97nvxwej. Т.е. добавлять хеш.
      П.С. Хорошо, что автор развивает компонент.
      Владимир
      27 февраля 2016, 18:21
      0
      Доброго дня!
      Удивительное дело, не устанавливается пакет. MODX Revolution 2.4.3-pl Сайт на ModHost.Pro, устанавливаю из репозитария modstore.pro С иными пакетами проблем нет.
      Виталий Барышников
      01 мая 2016, 06:05
      0
      День добрый! Не могу понять как работает метод FileItem -> rename.
      Использую fileAttach во фронте (Ajax-загрузка), чтобы добавлять файлы к форме обратной связи, в коде через хук
      цепляю файлы. НО!
      Чтобы прицепить файлы к письму с нормальными именами (а не X465VMijhrre97nvxwedfhdfdg.doc), я для каждого делаю переименование (item — отдельный объект FileItem) обратно в оригиниальное название:
      $item->rename($item->get('name'));
      и отправляю. Письмо приходит удачно с нормальными именами файлов (допустим «Документ 1.doc»).

      Но затем в хуке после отправки мне необходимо удалить этот переименованный файл, но
      $item->remove();
      Не проходит, т.к. он ищет X465VMijhrre97nvxwedfhdfdg.doc, а не переименованный «Документ 1.doc».
      Поэтому объект удаляется, а файл — нет. Как быть? Почему при rename internal_name в таблице не изменился на Документ 1.doc (смотрю через phpMyAdmin).
        Виталий Барышников
        01 мая 2016, 15:39
        0
        Удалось реализовать то, что хотел FormIt+AjaxForm+fileAttach. Единственное пока делал (и работал под админом) не замечал трабла с правами. Вышел и на тебе:


        Мне нужно чтобы аноним мог файлы загружать. Как это можно настроить?
        Виталий Барышников
        05 мая 2016, 17:29
        0
        Во-первых нужно предоставить доступ для медиа-источника с разрешением на «create
        А это где делается?

        Это верные настройки источника (на скрине)? Потому что так файлы через админку загрузить не получается (Interal Server Error). Если поставить «Файловая система», то работает.
          Виталий Барышников
          05 мая 2016, 17:57
          0
          Аноним ничего не может скачать (залогиненый менеджер и админ могут), что ему еще нужно?

          Извини конечно, что столько пишу, просто сроки подходят, а у меня заминки с правами, я это откладывал откладывал и вот уже и финиш и кипишь
            Степан Прищепенко
            25 мая 2016, 10:25
            0
            Привет, отличный вышел компонент, молодец! Опробовал версию 1.0.8-pl и наткнулся на грабли, о которых и хочу рассказать. У меня есть плагин который управляет именем закачиваемого файла, висит на событии OnFileManagerUpload. В результате при закачке он заменяет некоторые символы в именах файлах (в том числе приватных), а твой компонент возвращает ранее сформированные (фиксированные) имена. Как лечить:

            в core/components/fileattach/processors/mgr/upload.class.php
            $success = $this->source->uploadObjectsToContainer(
            $this->getProperty('path'),
            	array(array( // emulate a $_FILES object
            		"name" => &$this->filename, ....
            обязательно обозначаем переменную в виде ссылки!

            тут же идет присвоение:
            $fileitem->set('name', $file['name']);
            $fileitem->set('internal_name', $this->filename);
            хм вопрос интересный в связи с использованием плагинаов, но можно оставить и так. По присвоению я бы использовал fromArray один раз через, чем много set, будет красивее.

            и в сниппете snippet.fileattach.php обязательно меняем присвоение url на
            $itemArr['url'] = $public_url . $itemArr['path'] . $itemArr['internal_name'];
            ибо именно internal_name будет содержать настоящий путь к файлу.

            Ну и while(1)… я бы не стал использовать, как то мне не нравиться это.

            И еще, ты используешь стандартный getChunk, хотя можно использовать его из pdoTools, тогда префиксы @FILE, @INLINE итд будут работать, что есть плюс для любителей статики.
              Виталий Чекрыжев
              25 мая 2016, 15:47
              0
              Какова цель работы плагина на событии? Для чего ему вмешиваться в работу именования файлов? Передача в виде ссылки добавит совместимости с твоим плагином?

              Ситуацию с set да, можно переделать. Повысит требование к версии PHP.

              Для открытых файлов internal_name должен быть идентичен name.

              While(1) в том случае не страшен, тело выполняется как правило не более 1-2 раз.

              pdoTools можно бы использовать, но на практике сомнительна выгода в производительности.
                Степан Прищепенко
                26 мая 2016, 08:56
                0
                да мало ли для чего могут использоваться плагины… в моем случае я делал транслитерацию имен загружаемых файлов и удалял некоторые символы, всякие случаи бывают. Как то не правильно игнорировать возможности изначально заложенные в систему, не смотря на то, что компонент весьма самодостаточный.
                Виталий Чекрыжев
                25 мая 2016, 18:24
                0
                php.net/manual/ru/language.references.pass.php

                Замечание: В вызове функции отсутствует знак ссылки — он есть только в определении функции. Этого достаточно для корректной передачи аргументов по ссылке. Начиная с PHP 5.3.0, вы можете получить предупреждение о том, что передача переменной по ссылке устарела, если используете & в foo(&$a);. Начиная с PHP 5.4.0 передача переменной по ссылке стала невозможна, поэтому использование этого приема приведет к фатальной ошибке.
              Алексей Андреев
              28 июня 2016, 14:56
              0
              Пользуюсь данным дополнением на нескольких сайтах, хорошая вещь, но есть нюансы, которые мешают стабильной работе. Может я сам криво настроил, но всё же напишу:

              1) Поле «Имя». Зачем нужна возможность его смены, если это не ведёт к переименованию файла на сервере? Менеджеры меняют его, в итоге ссылка становится нерабочей. По-моему было бы логичнее его сделать disabled, как хэш. А поле «Описание» использовать для текста ссылки во фронте, я обычно так делаю…

              2) Выше уже писали про плагин. Я использую TransliterateFileNames для транслитерации русских имен файлов, в итоге при загрузке в FileAttach битая ссылка. Может придумать какую-нибудь встроенную опцию про транслит?
                Степан Прищепенко
                29 июня 2016, 22:01
                +1
                Да я писал про 2-й пункт, сделай все что описал выше и будет тебе счастье. По 1-му: сниппет вызывается закешированным в результате изменений в названии не видно, все там переименовывается, для проверки можно очистить кеш и обновить клиентскую страницу.
                  Альберт
                  02 августа 2016, 15:24
                  0
                  Так у меня и не заработал этот плагин нормально — воюет с именами файлов! Для русских файлов по-прежнему выдает их имя до загрузки. Как быть?
                    Tanya
                    15 октября 2016, 23:06
                    0
                    аналогичная проблема в работе компонента и у меня, поставила FastUploadTV, а у него транслитерация на событии OnFileManagerUpload висит. Соответственно при загрузке русскояз.файлов в FileAttach битая ссылка. Пробовала Ваш способ, не сработало, имена файлов не переименовываются, ошибка не уходит. Возможно в нем допустила ошибку, не могли бы вы исправленные строчки скопировать сюда полностью? Или в моем случае это не сработает всё равно?
                      Степан Прищепенко
                      16 октября 2016, 10:12
                      +1
                      давно не пользовался этим компонентом, поэтому фраза «а у него транслитерация на событии» заставляет меня думать что автор внедрил транслитерацию в компонент, если это так, я точно не отвечу на ваш вопрос. Если вы ошиблись в его постановке, то попробуйте отключить плагин выполняющий транслитерацию (не забудьте после очистить кэш) и посмотрите как работает загрузка. Строки выше представленны в достаточном виде, если же автор менял код, то полная замена текста может привести и к 500-й ошибке. Вообще, мне кажется будет лучшим, если автор сам поучаствует в решении этой проблемы.
                        Tanya
                        16 октября 2016, 15:18
                        0
                        спасибо за ответ! но видимо проблема эта не настолько актуальна, чтобы её решать. И у меня бы её не было, если бы не поставила FastUploadTV, да, если у него отключить событие OnFileManagerUpload(транслитер.имен файлов не происходит) и FileAttach отлично работает. Пробовал и как писали выше, TransliterateFileNames для транслитерации русских имен файлов, тоже самое не нравится FileAttach эти переименованные имена файлов.
                        Если не смогу придумать выхода, буду искать или замену компоненту… хотя таких удобных аналогов не видела или приучать менеджеров не закачивать файлы с русс.именами.
                          Иннокентий
                          10 ноября 2016, 06:15
                          1
                          +1
                          Использую оба дополнения, в FastUploadTV отключил транслит в системных настройках и поставил префикс имени файла: "{y}-{m}-{d}-{rand}" и «Использовать префикс как имя файла: Да».
                          Пока пользуюсь так.
                    Виталий Чекрыжев
                    12 февраля 2019, 22:02
                    +1
                    В последнем выпуске FA 1.0.10pl4 появилась внутренняя поддержка транслитерации файлов.
                      Руслан Алеев
                      12 февраля 2019, 23:40
                      0
                      За это отдельное спасибо! :) Дождался я.
                    Янис
                    16 ноября 2016, 18:23
                    0
                    На тему вывода даты загруженного файла. Мне понадобилось и я добавил пару строк (версия 1.0.8):
                    // Определяем дополнительную опцию
                    $showDate = $modx->getOption('showDate', $scriptProperties, false);
                    // Перед сбросом данных в чанк определяем дату файла
                    if ($showDate) $itemArr['filedate'] = filectime($item->getFullPath());
                    Теперь у нас есть еще одна опция &showDate=`1` и еще один плейсхолдер [[+filedate]], что содержит дату файла.
                    Виталий, внесете дополнения в сниппет FileAttach?
                      Виталий Чекрыжев
                      20 ноября 2016, 09:49
                      0
                      Добавлю, но несколько иначе. filectime возвращает unix epoch, это как бы не совсем дата.
                      Новая опция: showTime
                      Новый placeholder: timestamp

                      github.com/13hakta/FileAttach
                        Янис
                        20 ноября 2016, 12:43
                        0
                        ОК. Я не программист. И даже не учусь :)

                        BTW. Мой клиент чуть расширил задачу и мне понадобилось передать [[+url]] дальше. Пришлось урл закодировать. Так появились еще две строчки:
                        // Новая опция для urlencode 
                        $urlEncode = $modx->getOption('urlEncode', $scriptProperties, false);
                        // И как обычно, перед сбросом в чанк --  URL-кодирование строки. 
                        if ($urlEncode) 
                                $itemArr['urlencode'] = urlencode($itemArr['url']);
                        Насколько оно надо другим, не скажу. Но если надо — пользуйтесь.
                      Виталий Барышников
                      26 ноября 2016, 16:47
                      0
                      Привет. FA нормально работает на Modx 2.5.2? У меня после обновления не даёт скачивать (ни админу, ни анониму), права перепроверил, всё нормально с ними. До обновления работало.
                      {"success":false,"message":"\u0414\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d.","total":0,"data":[],"object":{"code":401}}
                        Альберт
                        12 января 2017, 19:48
                        0
                        Та же фигня, так и не решил этот вопрос.
                          Виталий Барышников
                          13 января 2017, 01:54
                          0
                          Это из-за обновления безопасности modx. Компонент нужно переделывать.
                        Георгий Графов
                        28 ноября 2016, 11:32
                        0
                        Добрый день, не могу понять в чем проблема, заливаю pdf с названием на русском языке, в папку на сервере заливается переименованный файл в латинице, но при выводе на сайте [+url] ссылка выводится на русском. А при заливке файлов на латинице, если хоть одна буква большая, то опять получаю 404 ошибку.
                          Георгий Графов
                          28 ноября 2016, 12:05
                          0
                          После включения privat все начало открываться, или я дурак или лыжи не едут
                            Альберт
                            12 января 2017, 19:47
                            0
                            У вас срабатывает функция переименования файла при загрузке, об этом речь в топике и идет.
                          Виталий Барышников
                          13 марта 2017, 06:55
                          0
                          Привет. Можно как-то просто проверить есть ли файлы у ресурса? ну и если есть, то запускать fileAttach.

                          В шаблоне как-то так:

                          {if <файлы есть>}
                          <ul>
                                  [[FileAttach?
                                   &tpl=`custom.FileAttachTpl`
                                   &showSize=`true`
                                   &privateUrl=`1`]]
                          </ul>
                          {else}
                          <p>У ресурса нет прикрепленных файлов</p>
                          {/if}
                          Андрей
                          02 апреля 2017, 20:11
                          0
                          Прочитал документацию, но так и не понял как правильно подключить FileAttach, чтобы любой пользователь смог скачивать (загруженные мной) файлы? Есть очень подробная инструкция? Спасибо!
                            Sergey Leleko
                            16 мая 2017, 19:49
                            0
                            Привет! У кого-то пишет тоже как у меня при сохранении файла в лог модикса:
                            /html/core/xpdo/om/xpdoobject.class.php : 811) FileItem: Attempt to set NOT NULL field hash to NULL
                            ?
                              Sergey Leleko
                              17 мая 2017, 14:52
                              0
                              Обращаясь к автору, было бы неплохо добавить возможность хранить и выводить размеры файлов.
                              Я например переносил когда таблицу хранения файлов от одного из компонентов MODX Evo не смог придумать применения столбцу с размерами файлов. А так компонент отличный!
                                Виталий Чекрыжев
                                17 мая 2017, 15:20
                                +1
                                Вывод размера файла уже реализовано в компоненте, для этого в вызове надо указать параметр &showSize=`1`
                                а в чанке указать [[+size]]
                                Sergey Leleko
                                17 мая 2017, 20:56
                                0
                                еще есть момент, в чанке присутствует [[+timestamp]] плейсхолдер, но какое время учитывается и как его вывести? вроде у сниппета соответствующего параметра нет?

                                По поводу вывода размера, я бы добавил возможность вывода в мегабайтах.
                                Можно конечно как -то так делать:
                                [[+size:notempty=`
                                <small>Size: [[+size:mod=[[+size:div=`1024`]] mbytes</small>`]]
                                , но много чисел после запятой, как обрезать модификатором не знаю))

                                Могу попробовать сам этот функционал дописать, если вам особо некогда. Если у меня получится, то куда если что прислать дополнение к коду? Чтобы оно выло в компоненте в виде обновления
                                  Sergey Leleko
                                  18 мая 2017, 05:56
                                  0
                                  в коде компонента нашел &showTime который и отвечает за вывод времени и даты) Добавьте в инструкцию что его можно включать)
                                  [[!FileAttach:default=`нет никто`?
                                  &showSize=`true` &showTime=`true`]]
                                Василий Столейков
                                28 июля 2017, 07:25
                                0
                                Есть возможность ограничить типы загружаемых файлов с фронтенда? Например только фото, или фото и документы?
                                  Виталий Чекрыжев
                                  28 июля 2017, 08:25
                                  0
                                  Да, регулируется свойствами медиа-источника.
                                    Василий Столейков
                                    28 июля 2017, 08:38
                                    0
                                    А локально никак? Например в одной форме только документы, в другой только фото?
                                  Василий
                                  18 августа 2017, 15:09
                                  0
                                  Нифига непонятно из документации, вот так его вписывать —
                                  "Скачать файл"
                                  или просто вот так — "[[FileAttach? &privateUrl=`4`]]"
                                  архив с файлом загружен, присвоился ид 4, вроде так и указано но качается страничка html вместо файла.
                                  Мне кажется каждому разработчику стоило бы задуматься над тем как он преподносит свое дополнение. Мало того что документация написана себе на уме так еще и скрины неактивны. Вроде как следовало бы быть благодарным за то что люди это все разрабатывают, но пока что от этих дополнений получается больше гемора чем реальной пользы.
                                    Виталий Чекрыжев
                                    18 августа 2017, 15:14
                                    0
                                    А сделать-то чего хотел?
                                      Василий
                                      18 августа 2017, 15:25
                                      0
                                      Чтобы просто вместо стандартной ссылки на скачку файла Скачать файл срабатывал FileAttach и считал количество скачек. И чтобы скачивание было доступно для любого незарегистрированного пользователя. Конечно было бы круто скрывать прямые ссылки, генерировать секретные и т п но мне бы и этого для начала хватило
                                    Василий
                                    18 августа 2017, 15:25
                                    0
                                    Чтобы просто вместо стандартной ссылки на скачку файла Скачать файл срабатывал FileAttach и считал количество скачек. И чтобы скачивание было доступно для любого незарегистрированного пользователя. Конечно было бы круто скрывать прямые ссылки, генерировать секретные и т п но мне бы и этого для начала хватило
                                      Виталий Чекрыжев
                                      18 августа 2017, 15:33
                                      +1
                                      компонент предназначен для организации коллекций файлов, связанных с документами. произвольные ссылки на сайте следует заменять другим способом.
                                        Василий
                                        18 августа 2017, 15:37
                                        0
                                        каким?
                                          Виталий Чекрыжев
                                          18 августа 2017, 15:46
                                          +1
                                          к теме компонента FileAttach это не относится.
                                            Василий
                                            18 августа 2017, 15:53
                                            0
                                            FileAttach — не сможет считать количество скачек если каждая ссылка прописывается в tv параметр отдельного товара miniShop2, например в tv «Аннотация»? или если создавать отдельный tv ссылки для каждого товара? дело в регистрации на сайте или в чем трудность?
                                              Виталий Чекрыжев
                                              18 августа 2017, 15:58
                                              +1
                                              нет, не сможет. считает только количество скачиваний тех файлов, которые загружены через интерфейс в закладке «Файлы».
                                                Василий
                                                18 августа 2017, 16:11
                                                0
                                                ну вот загрузил я в файлы к определенному товару файл take.ms/sDbMc что мне надо сделать чтобы вывести ссылку на этот файл в товаре?
                                                  Виталий Чекрыжев
                                                  18 августа 2017, 16:21
                                                  +1
                                                  вызвать в странице сниппет [[FileAttach]] — доп. параметры по необходимости.
                                                    Василий
                                                    18 августа 2017, 16:29
                                                    0
                                                    take.ms/CK1Tf когда вот так вызываю обычную ссылку то работает, когда делаю как на скрине — не работает. Или что имеется ввиду на странице? на какой странице и где именно? в шаблоне? если в шаблоне к товару то где надо это прописать?
                                                      Василий
                                                      20 августа 2017, 00:27
                                                      0
                                                      Так как считать то количество скачек? так если делать take.ms/saROJ то файл просто качается без подсчета
                                                        Василий
                                                        20 августа 2017, 10:50
                                                        -3
                                                        Вот это и имелось ввиду. «Вызвать в странице сниппет» — замечательный ответ отсекающий любые возможные вопросы! Это все равно что вы бы пришли к доктору и сказали — я что-то приболел, что делать? а он бы вам сказал — сделайте себе укол — и пошел по делам.
                                                        И такие большинство документаций. Неуж-то нельзя прикрепить к документации пару скринов того как оно выглядит на практике? Не, ну если вы написали это дополнение для себя и вам без разницы сможет ли еще кто-то им пользоваться — тогда конечно вас можно понять
                                                          Виталий Чекрыжев
                                                          21 августа 2017, 11:00
                                                          0
                                                          Василий, попробуйте почитать документацию. Там указано, что свойству privateUrl надо указывать булево значение — true/false. Через FA выводится не определенный элемент записи, а набор записей — список загруженных файлов. Чтобы вывести только один, соответственно, надо загрузить только один. Чтобы все файлы были закрыты от прямого доступа, то в системных настройках надо выставить true для свойства fileattach.private.
                                                            Василий
                                                            21 августа 2017, 16:11
                                                            0
                                                            У меня вместо архива качается страница html take.ms/VRAhf
                                                            Виталий Чекрыжев
                                                            21 августа 2017, 22:08
                                                            0
                                                            И правильно что не архив. У вас ссылка, которую вы тычете сформирована из поля «аннотация», а не сниппетом. А сниппет выводит список файлов прицепленных к странице товаров, а не одного товара. Т.е. то, что вы хотите — должно не работать. Нужно прицепить вывод сниппета к чанку, который показывает отдельную запись товара.
                                                            Василий
                                                            21 августа 2017, 22:23
                                                            0
                                                            к этому чанку? take.ms/MVduH
                                                            Виталий Чекрыжев
                                                            22 августа 2017, 12:15
                                                            0
                                                            и в него тоже. и «Нужно прицепить вывод сниппета к чанку, который показывает отдельную запись товара.» при итерации списка товаров.
                                                            Василий
                                                            26 августа 2017, 22:11
                                                            0
                                                            Кажется получилось) Только что-то не выходит кнопку подцепить. Вы бы взглянули этот код? Сниппет так с кнопкой не работает?
                                                            <a href="[[FileAttach]]"class="btn btn-default btn-lg disabled">DOWNLOAD</a>
                                                            Виталий Чекрыжев
                                                            27 августа 2017, 06:04
                                                            0
                                                            Нужно вызывать отдельно. Так работать — вызываться будет, но получите кашу.
                                                            Василий
                                                            27 августа 2017, 08:51
                                                            0
                                                            То-есть про кнопку DOWNLOAD лучше забыть?
                                        Sergey Leleko
                                        20 октября 2017, 08:06
                                        0
                                        Добрый день! Какие необходимы права для пользователя в контексте mgr чтобы работала вкладка у ресурса «Файлы»? Столкнулся с тем, что когда сделал роль для менеджера (убрав все вкладки с шаблонами и лишними пунктами верхнего меню), то вкладка файлы у ресурсов тоже убралась. Вот и хочу понимать что там в политике, какую галочку нужно добавить чтобы появилась?
                                          Sergey Leleko
                                          20 октября 2017, 09:16
                                          0
                                          Нашел)
                                            Al Benedict
                                            17 апреля 2018, 22:28
                                            0
                                            И где нашел, не подскажешь?
                                              Sergey Leleko
                                              18 апреля 2018, 07:09
                                              0
                                              Ничего себе раскопал тему) У него есть свой шаблон в политиках безопасности, нужно посмотреть названия опций разрешений и добавить их в свой шаблон политики безопасности менеджера, после чего в самой политике безопасности менеджера проставить эти галочки которые появятся после добавления параметров FileAttach в шаблон политики безопасности.
                                          Евгений Мельников
                                          01 ноября 2017, 10:57
                                          0
                                          Добрый день! Поставил компонент, все настроил. Файлы добавляются и скачиваются. Но столкнулся с одной проблемой. Не выводится размер файлов. То есть вместо размера стоит 0. Кто-нибудь сталкивался с таким?
                                          wissem
                                          16 апреля 2019, 13:12
                                          0
                                          У меня почему-то при самом простом вызове сниппета (когда стоит private = «no») ссылка на файл не формируется, а формируется что-то типа 0.0.0.62/filename.ext. При чем при первом тесте работало, ЕМНИП. Кроме того не работает ручная сортировка драг энд дропом в админке, даже если при вызове указывать sortby=`rank`. Версия modx revo 2.6.5. Переустановка пакета не помогает…
                                            Виталий Чекрыжев
                                            16 апреля 2019, 14:54
                                            0
                                            При включенном private режиме будет формироваться ссылка без прямого доступа к файлу. Когда вы отключаете private, то будет прямой доступ.
                                              wissem
                                              16 апреля 2019, 14:57
                                              0
                                              верно, при включенном приват формируется ссылка) а что происходит при выключенном приват? и как анониму тогда скачать файл? Я имею ввиду, что у меня прямая ссылка к файлу не формируется при выключенном «приват» :)
                                                Виталий Чекрыжев
                                                16 апреля 2019, 15:08
                                                0
                                                при выключенном файл доступен напрямую. для включенного надо настраивать права доступа.
                                                  wissem
                                                  16 апреля 2019, 15:14
                                                  0
                                                  а я о чем) у меня файл не доступен напрямую) ссылка на него выглядит
                                                  <a href="//filename.ext">filename.ext</a>
                                                  , именно так показывает инспектор в хроме :)
                                                    Виталий Чекрыжев
                                                    16 апреля 2019, 15:17
                                                    0
                                                    соответственно, проблема с путями. настраивайте медиа ресурс.
                                                      wissem
                                                      16 апреля 2019, 15:26
                                                      0
                                                      Виталий, я прошу прощения, не могу найти что именно должно быть настроено для доступа по прямой ссылке. Вы бы моги подсказать?
                                                        wissem
                                                        16 апреля 2019, 16:33
                                                        0
                                                        нашел немного информации тут modx.pro/help/7972. Если будут еще вопросы — напишу. Спасибо!!! :)
                                              wissem
                                              14 мая 2019, 16:27
                                              0
                                              А есть какие-либо способы получать данные какой именно пользователь скачал файл? Т.е. если настроено так, что скаивать приватные файлы могут только пользователи группы Members, как узнать кто из них скачал файл?
                                              Iskatel
                                              28 мая 2019, 21:29
                                              0
                                              Доброе время суток.
                                              makeURL true/false — в чем разница?
                                              Не заметил разницы.
                                              true/false — ссылка не меняется.
                                              Спасибо
                                                Iskatel
                                                28 мая 2019, 21:54
                                                0
                                                Загружаю файлы на сервер — общие для нескольких ресурсов.
                                                Как загружать файлы, просто в общую папку, не к конкретному ресурсу?

                                                Спасибо
                                                  Павел
                                                  29 мая 2019, 17:52
                                                  0
                                                  Здравствуйте. Пытаюсь в чанке FileAttachTpl работать с элементами Fenom, но ничего не выходит. Например, не получается заменить [[+size]] ни на {$_pls['size']}, ни на {$size}, такая же проблема с другими плейсхолдерами. Это принципиально не возможно или я что-то делаю не правильно?
                                                    Евгений Webinmd
                                                    29 мая 2019, 23:05
                                                    +1
                                                    не получится, феном используется в pdoTools сниппетах, только если переписать нужный сниппет с использованием pdotools.
                                                      Павел
                                                      30 мая 2019, 17:50
                                                      0
                                                      Спасибо, а это требует радикальных изменений кода или просто нужно добавить какой-то класс?
                                                        Евгений Webinmd
                                                        30 мая 2019, 18:53
                                                        1
                                                        +1
                                                        1) подключить сервис
                                                        $pdoTools = $modx->getService('pdoTools');
                                                        2) заменить вызов чанка
                                                        $modx->getChunk
                                                        на
                                                        $pdoTools->getChunk
                                                        Это в самом сниппете, продублируй и заменяй
                                                          Павел
                                                          31 мая 2019, 20:55
                                                          0
                                                          Попробовал, всё получилось. Спасибо.
                                                    Артур
                                                    05 ноября 2019, 12:30
                                                    0
                                                    Можете подсказать в чем дело.

                                                    Вывожу файлы через «Приватный режим/ fileattach.private ». Но почему-то файлы качаются пустые — вес файла 0 кб.

                                                    Запускаю snippet

                                                    {'!FileAttach' | snippet:[
                                                    'resource'=>$id,
                                                    'groups'=>'Users',
                                                    'privateUrl'=>true,
                                                    'showHASH'=>true,
                                                    'showSize'=>true
                                                    ]}
                                                    В системных настройках все — НЕТ. Кроме

                                                    fileattach.private — 1
                                                    fileattach.mediasource — 1
                                                    fileattach.files_path — assets/audio/
                                                    fileattach.templates — 3

                                                    Также включен траслит файлов, хотя я его не включал (при загрузке меняется имя файла)
                                                      Виталий Чекрыжев
                                                      05 ноября 2019, 12:49
                                                      0
                                                      Вариантов два: Пользователь не авторизован или не входит в группу, путь к файлу изменился
                                                        Артур
                                                        05 ноября 2019, 12:54
                                                        0
                                                        Пользователь авторизован и принадлежит к группе (пробовал и без группы).
                                                        Путь не менялся.

                                                        Напрямую файл качается (без fileattach.private)
                                                          Артур
                                                          05 ноября 2019, 13:10
                                                          0
                                                          Проверил логи, проверил файл.
                                                          Почему-то регистр имени не соответствует. Файл полностью с нижним регистром, а в запросе он разный.
                                                        Ольга Соболева
                                                        27 ноября 2019, 14:04
                                                        0
                                                        Возникла такая проблема: файлы с фронтэнда загружаются только через пользователей, у которых установлены неограниченные поля. Для любых других групп (даже администратора) загрузка не происходит. Права FileAttach добавлены. Создан отдельный источник файлов, этот источник указан в настройках FileAttach, к нему добавлен полный доступ для групп пользователей.
                                                        При этом в логах никаких ошибок нет.

                                                        Подскажите, пожалуйста, в чем может быть причина? Куда копать?

                                                        P.S. Реализация загрузки файлов с фронтэнда сделана с помощью примера от автора)
                                                          Scorp Satex
                                                          22 мая 2020, 16:44
                                                          0
                                                          Здравствуйте.

                                                          Есть ли возможность указывать количество скачиваний файла?

                                                          Например есть фотобанк:
                                                          1. Пользователь 1 — может скачать 5 раз.
                                                          2. Пользователь 2 — может скачать 15 раз.

                                                          Может ли ваш плагин считать кол-во скачиваний, и потом запрещать доступ после лимита?
                                                            Виталий Чекрыжев
                                                            03 июня 2020, 09:59
                                                            0
                                                            Здравствуйте. Возможно считать загрузки, однако нет ограничений по количеству скачиваний.
                                                            В дополнении msFile, которое работает на базе FileAttach с miniShop2 возможно отслеживание был ли скачан файл покупателем и возможно выставлении времени действия ссылки.
                                                            ck
                                                            ck
                                                            06 июня 2020, 09:09
                                                            0
                                                            Виталий, приветствую!
                                                            Есть ли возможность делать одноразовые ссылки?
                                                              Виталий Чекрыжев
                                                              09 июня 2020, 20:50
                                                              0
                                                              Доброго времени! В FA одноразовые не делаются, зато можно создавать цифровые товары через msFile и делать ссылки со сроком действия, а так же отслеживать был ли скачан файл-продукт.
                                                              Яна Митрофанова
                                                              02 декабря 2020, 09:37
                                                              0
                                                              Здравствуйте! Подскажите пожалуйста, будет ли работать в связке с Babel?
                                                              Чтобы при этом не пришлось дублировать документы, если для разных языков они остаются те же самые…
                                                                Виталий Чекрыжев
                                                                02 декабря 2020, 14:08
                                                                0
                                                                Здравствуйте. Привязка к документу производится на основании id ресурса, если для перевода создается новый ресурс, то файлы не привяжутся.
                                                                Дмитрий
                                                                26 июля 2023, 23:44
                                                                0
                                                                Добрый день! Подскажите, не получается установить пакет, не может создать записи в БД… В чем может быть дело?
                                                                  Андрей
                                                                  27 июля 2023, 02:10
                                                                  0
                                                                  Какая версия MODX, БД и кодировка/сравнение таблиц?
                                                                    Дмитрий
                                                                    27 июля 2023, 12:32
                                                                    0
                                                                    Modx 2.8.5, Mysql 8.0.33 кодировка utf8mb4 / utf8mb4_general_ci
                                                                      Андрей
                                                                      27 июля 2023, 16:46
                                                                      0
                                                                      Понижайте версию mysql до 5.7, тогда всё корректно установится.
                                                                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                  115