[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
Здесь параметры означают:
Выполняется запросом методом 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».
Для демонстрации возможностей вы можете ознакомиться из примера, скачав по ссылке. Распакуйте архив на сайте, задайте права группе пользователя и авторизуйтесь на сайте.
Обращение к функциях дополнения производится через соединитель (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».
Комментарии: 115
Рад, что компонент развивается. Очень удобно пользоваться таблицей файлов в админке, система шифрования закрытых файлов немного удивила, поскольку файл из Doc1.docx превращался во что-то типа X465VMijhrre97nvxwej причем без расширения, но к этому можно привыкнуть)
Был момент с получением доступа ко всем файлам (даже закрытым) перебором id. Это по прежнему возможно? Вместо id можно как-то проставить hash? Пока пользуюсь забугорским загрузчиком, он значительно проигрывает в удобстве предоставления информации, но при этом в ссылке нет id — превращает хэширует имя файла и директорию. Плюс есть разграничение доступа по группам, не, чтобы часто используется, но иногда полезно. Очень надеюсь, что подобное появится в FileAttach, поскольку с точки зрения менеджера сайта он на порядок приятнее и комфортнее в использовании.
Был момент с получением доступа ко всем файлам (даже закрытым) перебором id. Это по прежнему возможно? Вместо id можно как-то проставить hash? Пока пользуюсь забугорским загрузчиком, он значительно проигрывает в удобстве предоставления информации, но при этом в ссылке нет id — превращает хэширует имя файла и директорию. Плюс есть разграничение доступа по группам, не, чтобы часто используется, но иногда полезно. Очень надеюсь, что подобное появится в FileAttach, поскольку с точки зрения менеджера сайта он на порядок приятнее и комфортнее в использовании.
Благодарю за дельный комментарий.
В обновленной версии 1.0.7 больше нет возможности скачивания файлов через перебор цифрового идентификатора, отныне обращение производится через уникальный строковой идентификатор.
Так же появилась возможность регулирования отображения списка ссылок в сниппете через группы.
В обновленной версии 1.0.7 больше нет возможности скачивания файлов через перебор цифрового идентификатора, отныне обращение производится через уникальный строковой идентификатор.
Так же появилась возможность регулирования отображения списка ссылок в сниппете через группы.
Спасибо! Через пару дней с удовольствием протестирую.
система шифрования закрытых файлов немного удивила, поскольку файл из Doc1.docx превращался во что-то типа X465VMijhrre97nvxwej причем без расширенияДа, прозрачнее наверно было бы делать так X465VMijhrre97nvxwej_Doc1.docx или так Doc1.docx.X465VMijhrre97nvxwej. Т.е. добавлять хеш.
П.С. Хорошо, что автор развивает компонент.
перезагрузите пакет, заведётся.
Да, спасибо, все ок!
День добрый! Не могу понять как работает метод FileItem -> rename.
Использую fileAttach во фронте (Ajax-загрузка), чтобы добавлять файлы к форме обратной связи, в коде через хук
цепляю файлы. НО!
Чтобы прицепить файлы к письму с нормальными именами (а не X465VMijhrre97nvxwedfhdfdg.doc), я для каждого делаю переименование (item — отдельный объект FileItem) обратно в оригиниальное название:
Но затем в хуке после отправки мне необходимо удалить этот переименованный файл, но
Поэтому объект удаляется, а файл — нет. Как быть? Почему при rename internal_name в таблице не изменился на Документ 1.doc (смотрю через phpMyAdmin).
Использую 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).
Думаю, не. Я уже всё сделал, проверки, отправку, удаление, права осталось поднастроить.
У меня очень похожая задача, я так понял ты ее уже решыл, мож помочь ???
Привет, отличный вышел компонент, молодец! Опробовал версию 1.0.8-pl и наткнулся на грабли, о которых и хочу рассказать. У меня есть плагин который управляет именем закачиваемого файла, висит на событии OnFileManagerUpload. В результате при закачке он заменяет некоторые символы в именах файлах (в том числе приватных), а твой компонент возвращает ранее сформированные (фиксированные) имена. Как лечить:
в core/components/fileattach/processors/mgr/upload.class.php
тут же идет присвоение:
и в сниппете snippet.fileattach.php обязательно меняем присвоение url на
Ну и while(1)… я бы не стал использовать, как то мне не нравиться это.
И еще, ты используешь стандартный getChunk, хотя можно использовать его из pdoTools, тогда префиксы @FILE, @INLINE итд будут работать, что есть плюс для любителей статики.
в 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 итд будут работать, что есть плюс для любителей статики.
Какова цель работы плагина на событии? Для чего ему вмешиваться в работу именования файлов? Передача в виде ссылки добавит совместимости с твоим плагином?
Ситуацию с set да, можно переделать. Повысит требование к версии PHP.
Для открытых файлов internal_name должен быть идентичен name.
While(1) в том случае не страшен, тело выполняется как правило не более 1-2 раз.
pdoTools можно бы использовать, но на практике сомнительна выгода в производительности.
Ситуацию с set да, можно переделать. Повысит требование к версии PHP.
Для открытых файлов internal_name должен быть идентичен name.
While(1) в том случае не страшен, тело выполняется как правило не более 1-2 раз.
pdoTools можно бы использовать, но на практике сомнительна выгода в производительности.
да мало ли для чего могут использоваться плагины… в моем случае я делал транслитерацию имен загружаемых файлов и удалял некоторые символы, всякие случаи бывают. Как то не правильно игнорировать возможности изначально заложенные в систему, не смотря на то, что компонент весьма самодостаточный.
php.net/manual/ru/language.references.pass.php
Замечание: В вызове функции отсутствует знак ссылки — он есть только в определении функции. Этого достаточно для корректной передачи аргументов по ссылке. Начиная с PHP 5.3.0, вы можете получить предупреждение о том, что передача переменной по ссылке устарела, если используете & в foo(&$a);. Начиная с PHP 5.4.0 передача переменной по ссылке стала невозможна, поэтому использование этого приема приведет к фатальной ошибке.
вот про это не читал, спасибо.
проверил работу в версиях 5.3, 5.4, 5.6 — везде работает нормально и в защищенном и в обычном. Делаю вывод: на заборе тоже написано, а там дрова,
дроводелы напутали?
хз работает же.
Пользуюсь данным дополнением на нескольких сайтах, хорошая вещь, но есть нюансы, которые мешают стабильной работе. Может я сам криво настроил, но всё же напишу:
1) Поле «Имя». Зачем нужна возможность его смены, если это не ведёт к переименованию файла на сервере? Менеджеры меняют его, в итоге ссылка становится нерабочей. По-моему было бы логичнее его сделать disabled, как хэш. А поле «Описание» использовать для текста ссылки во фронте, я обычно так делаю…
2) Выше уже писали про плагин. Я использую TransliterateFileNames для транслитерации русских имен файлов, в итоге при загрузке в FileAttach битая ссылка. Может придумать какую-нибудь встроенную опцию про транслит?
1) Поле «Имя». Зачем нужна возможность его смены, если это не ведёт к переименованию файла на сервере? Менеджеры меняют его, в итоге ссылка становится нерабочей. По-моему было бы логичнее его сделать disabled, как хэш. А поле «Описание» использовать для текста ссылки во фронте, я обычно так делаю…
2) Выше уже писали про плагин. Я использую TransliterateFileNames для транслитерации русских имен файлов, в итоге при загрузке в FileAttach битая ссылка. Может придумать какую-нибудь встроенную опцию про транслит?
Да я писал про 2-й пункт, сделай все что описал выше и будет тебе счастье. По 1-му: сниппет вызывается закешированным в результате изменений в названии не видно, все там переименовывается, для проверки можно очистить кеш и обновить клиентскую страницу.
Так у меня и не заработал этот плагин нормально — воюет с именами файлов! Для русских файлов по-прежнему выдает их имя до загрузки. Как быть?
аналогичная проблема в работе компонента и у меня, поставила FastUploadTV, а у него транслитерация на событии OnFileManagerUpload висит. Соответственно при загрузке русскояз.файлов в FileAttach битая ссылка. Пробовала Ваш способ, не сработало, имена файлов не переименовываются, ошибка не уходит. Возможно в нем допустила ошибку, не могли бы вы исправленные строчки скопировать сюда полностью? Или в моем случае это не сработает всё равно?
давно не пользовался этим компонентом, поэтому фраза «а у него транслитерация на событии» заставляет меня думать что автор внедрил транслитерацию в компонент, если это так, я точно не отвечу на ваш вопрос. Если вы ошиблись в его постановке, то попробуйте отключить плагин выполняющий транслитерацию (не забудьте после очистить кэш) и посмотрите как работает загрузка. Строки выше представленны в достаточном виде, если же автор менял код, то полная замена текста может привести и к 500-й ошибке. Вообще, мне кажется будет лучшим, если автор сам поучаствует в решении этой проблемы.
спасибо за ответ! но видимо проблема эта не настолько актуальна, чтобы её решать. И у меня бы её не было, если бы не поставила FastUploadTV, да, если у него отключить событие OnFileManagerUpload(транслитер.имен файлов не происходит) и FileAttach отлично работает. Пробовал и как писали выше, TransliterateFileNames для транслитерации русских имен файлов, тоже самое не нравится FileAttach эти переименованные имена файлов.
Если не смогу придумать выхода, буду искать или замену компоненту… хотя таких удобных аналогов не видела или приучать менеджеров не закачивать файлы с русс.именами.
Если не смогу придумать выхода, буду искать или замену компоненту… хотя таких удобных аналогов не видела или приучать менеджеров не закачивать файлы с русс.именами.
Использую оба дополнения, в FastUploadTV отключил транслит в системных настройках и поставил префикс имени файла: "{y}-{m}-{d}-{rand}" и «Использовать префикс как имя файла: Да».
Пока пользуюсь так.
Пока пользуюсь так.
В последнем выпуске FA 1.0.10pl4 появилась внутренняя поддержка транслитерации файлов.
За это отдельное спасибо! :) Дождался я.
На тему вывода даты загруженного файла. Мне понадобилось и я добавил пару строк (версия 1.0.8):
Виталий, внесете дополнения в сниппет FileAttach?
// Определяем дополнительную опцию
$showDate = $modx->getOption('showDate', $scriptProperties, false);
// Перед сбросом данных в чанк определяем дату файла
if ($showDate) $itemArr['filedate'] = filectime($item->getFullPath());
Теперь у нас есть еще одна опция &showDate=`1` и еще один плейсхолдер [[+filedate]], что содержит дату файла.Виталий, внесете дополнения в сниппет FileAttach?
Добавлю, но несколько иначе. filectime возвращает unix epoch, это как бы не совсем дата.
Новая опция: showTime
Новый placeholder: timestamp
github.com/13hakta/FileAttach
Новая опция: showTime
Новый placeholder: timestamp
github.com/13hakta/FileAttach
ОК. Я не программист. И даже не учусь :)
BTW. Мой клиент чуть расширил задачу и мне понадобилось передать [[+url]] дальше. Пришлось урл закодировать. Так появились еще две строчки:
BTW. Мой клиент чуть расширил задачу и мне понадобилось передать [[+url]] дальше. Пришлось урл закодировать. Так появились еще две строчки:
// Новая опция для urlencode
$urlEncode = $modx->getOption('urlEncode', $scriptProperties, false);
// И как обычно, перед сбросом в чанк -- URL-кодирование строки.
if ($urlEncode)
$itemArr['urlencode'] = urlencode($itemArr['url']);
Насколько оно надо другим, не скажу. Но если надо — пользуйтесь.
Привет. 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}}
Та же фигня, так и не решил этот вопрос.
Это из-за обновления безопасности modx. Компонент нужно переделывать.
Добрый день, не могу понять в чем проблема, заливаю pdf с названием на русском языке, в папку на сервере заливается переименованный файл в латинице, но при выводе на сайте [+url] ссылка выводится на русском. А при заливке файлов на латинице, если хоть одна буква большая, то опять получаю 404 ошибку.
После включения privat все начало открываться, или я дурак или лыжи не едут
У вас срабатывает функция переименования файла при загрузке, об этом речь в топике и идет.
Привет. Можно как-то просто проверить есть ли файлы у ресурса? ну и если есть, то запускать fileAttach.
В шаблоне как-то так:
В шаблоне как-то так:
{if <файлы есть>}
<ul>
[[FileAttach?
&tpl=`custom.FileAttachTpl`
&showSize=`true`
&privateUrl=`1`]]
</ul>
{else}
<p>У ресурса нет прикрепленных файлов</p>
{/if}
Можно использовать фильтр для вывода умолчального значения.
[[FileAttach:default=`нет никто`?
&tpl=`custom.FileAttachTpl`
&showSize=`true`
&privateUrl=`1`]]
[[FileAttach:default=`нет никто`?
&tpl=`custom.FileAttachTpl`
&showSize=`true`
&privateUrl=`1`]]
Спасибо за быстрый ответ, мне это подошло.
Работает на сайте на ура.
Работает на сайте на ура.
как сделать добавления description file в frontend
Прочитал документацию, но так и не понял как правильно подключить FileAttach, чтобы любой пользователь смог скачивать (загруженные мной) файлы? Есть очень подробная инструкция? Спасибо!
Привет! У кого-то пишет тоже как у меня при сохранении файла в лог модикса:
/html/core/xpdo/om/xpdoobject.class.php : 811) FileItem: Attempt to set NOT NULL field hash to NULL
?
Обращаясь к автору, было бы неплохо добавить возможность хранить и выводить размеры файлов.
Я например переносил когда таблицу хранения файлов от одного из компонентов MODX Evo не смог придумать применения столбцу с размерами файлов. А так компонент отличный!
Я например переносил когда таблицу хранения файлов от одного из компонентов MODX Evo не смог придумать применения столбцу с размерами файлов. А так компонент отличный!
Вывод размера файла уже реализовано в компоненте, для этого в вызове надо указать параметр &showSize=`1`
а в чанке указать [[+size]]
а в чанке указать [[+size]]
Благодарю!
еще есть момент, в чанке присутствует [[+timestamp]] плейсхолдер, но какое время учитывается и как его вывести? вроде у сниппета соответствующего параметра нет?
По поводу вывода размера, я бы добавил возможность вывода в мегабайтах.
Можно конечно как -то так делать:
Могу попробовать сам этот функционал дописать, если вам особо некогда. Если у меня получится, то куда если что прислать дополнение к коду? Чтобы оно выло в компоненте в виде обновления
По поводу вывода размера, я бы добавил возможность вывода в мегабайтах.
Можно конечно как -то так делать:
[[+size:notempty=`
<small>Size: [[+size:mod=[[+size:div=`1024`]] mbytes</small>`]]
, но много чисел после запятой, как обрезать модификатором не знаю))Могу попробовать сам этот функционал дописать, если вам особо некогда. Если у меня получится, то куда если что прислать дополнение к коду? Чтобы оно выло в компоненте в виде обновления
в коде компонента нашел &showTime который и отвечает за вывод времени и даты) Добавьте в инструкцию что его можно включать)
[[!FileAttach:default=`нет никто`?
&showSize=`true` &showTime=`true`]]
Есть возможность ограничить типы загружаемых файлов с фронтенда? Например только фото, или фото и документы?
Да, регулируется свойствами медиа-источника.
А локально никак? Например в одной форме только документы, в другой только фото?
Нифига непонятно из документации, вот так его вписывать —
"Скачать файл"
или просто вот так — "[[FileAttach? &privateUrl=`4`]]"
архив с файлом загружен, присвоился ид 4, вроде так и указано но качается страничка html вместо файла.
Мне кажется каждому разработчику стоило бы задуматься над тем как он преподносит свое дополнение. Мало того что документация написана себе на уме так еще и скрины неактивны. Вроде как следовало бы быть благодарным за то что люди это все разрабатывают, но пока что от этих дополнений получается больше гемора чем реальной пользы.
"Скачать файл"
или просто вот так — "[[FileAttach? &privateUrl=`4`]]"
архив с файлом загружен, присвоился ид 4, вроде так и указано но качается страничка html вместо файла.
Мне кажется каждому разработчику стоило бы задуматься над тем как он преподносит свое дополнение. Мало того что документация написана себе на уме так еще и скрины неактивны. Вроде как следовало бы быть благодарным за то что люди это все разрабатывают, но пока что от этих дополнений получается больше гемора чем реальной пользы.
А сделать-то чего хотел?
Чтобы просто вместо стандартной ссылки на скачку файла Скачать файл срабатывал FileAttach и считал количество скачек. И чтобы скачивание было доступно для любого незарегистрированного пользователя. Конечно было бы круто скрывать прямые ссылки, генерировать секретные и т п но мне бы и этого для начала хватило
Чтобы просто вместо стандартной ссылки на скачку файла Скачать файл срабатывал FileAttach и считал количество скачек. И чтобы скачивание было доступно для любого незарегистрированного пользователя. Конечно было бы круто скрывать прямые ссылки, генерировать секретные и т п но мне бы и этого для начала хватило
компонент предназначен для организации коллекций файлов, связанных с документами. произвольные ссылки на сайте следует заменять другим способом.
каким?
к теме компонента FileAttach это не относится.
FileAttach — не сможет считать количество скачек если каждая ссылка прописывается в tv параметр отдельного товара miniShop2, например в tv «Аннотация»? или если создавать отдельный tv ссылки для каждого товара? дело в регистрации на сайте или в чем трудность?
нет, не сможет. считает только количество скачиваний тех файлов, которые загружены через интерфейс в закладке «Файлы».
ну вот загрузил я в файлы к определенному товару файл take.ms/sDbMc что мне надо сделать чтобы вывести ссылку на этот файл в товаре?
вызвать в странице сниппет [[FileAttach]] — доп. параметры по необходимости.
take.ms/CK1Tf когда вот так вызываю обычную ссылку то работает, когда делаю как на скрине — не работает. Или что имеется ввиду на странице? на какой странице и где именно? в шаблоне? если в шаблоне к товару то где надо это прописать?
Так как считать то количество скачек? так если делать take.ms/saROJ то файл просто качается без подсчета
Вот это и имелось ввиду. «Вызвать в странице сниппет» — замечательный ответ отсекающий любые возможные вопросы! Это все равно что вы бы пришли к доктору и сказали — я что-то приболел, что делать? а он бы вам сказал — сделайте себе укол — и пошел по делам.
И такие большинство документаций. Неуж-то нельзя прикрепить к документации пару скринов того как оно выглядит на практике? Не, ну если вы написали это дополнение для себя и вам без разницы сможет ли еще кто-то им пользоваться — тогда конечно вас можно понять
И такие большинство документаций. Неуж-то нельзя прикрепить к документации пару скринов того как оно выглядит на практике? Не, ну если вы написали это дополнение для себя и вам без разницы сможет ли еще кто-то им пользоваться — тогда конечно вас можно понять
Василий, попробуйте почитать документацию. Там указано, что свойству privateUrl надо указывать булево значение — true/false. Через FA выводится не определенный элемент записи, а набор записей — список загруженных файлов. Чтобы вывести только один, соответственно, надо загрузить только один. Чтобы все файлы были закрыты от прямого доступа, то в системных настройках надо выставить true для свойства fileattach.private.
У меня вместо архива качается страница html take.ms/VRAhf
И правильно что не архив. У вас ссылка, которую вы тычете сформирована из поля «аннотация», а не сниппетом. А сниппет выводит список файлов прицепленных к странице товаров, а не одного товара. Т.е. то, что вы хотите — должно не работать. Нужно прицепить вывод сниппета к чанку, который показывает отдельную запись товара.
к этому чанку? take.ms/MVduH
и в него тоже. и «Нужно прицепить вывод сниппета к чанку, который показывает отдельную запись товара.» при итерации списка товаров.
Кажется получилось) Только что-то не выходит кнопку подцепить. Вы бы взглянули этот код? Сниппет так с кнопкой не работает?
<a href="[[FileAttach]]"class="btn btn-default btn-lg disabled">DOWNLOAD</a>
Нужно вызывать отдельно. Так работать — вызываться будет, но получите кашу.
То-есть про кнопку DOWNLOAD лучше забыть?
Добрый день! Какие необходимы права для пользователя в контексте mgr чтобы работала вкладка у ресурса «Файлы»? Столкнулся с тем, что когда сделал роль для менеджера (убрав все вкладки с шаблонами и лишними пунктами верхнего меню), то вкладка файлы у ресурсов тоже убралась. Вот и хочу понимать что там в политике, какую галочку нужно добавить чтобы появилась?
Нашел)
И где нашел, не подскажешь?
Ничего себе раскопал тему) У него есть свой шаблон в политиках безопасности, нужно посмотреть названия опций разрешений и добавить их в свой шаблон политики безопасности менеджера, после чего в самой политике безопасности менеджера проставить эти галочки которые появятся после добавления параметров FileAttach в шаблон политики безопасности.
Добрый день! Поставил компонент, все настроил. Файлы добавляются и скачиваются. Но столкнулся с одной проблемой. Не выводится размер файлов. То есть вместо размера стоит 0. Кто-нибудь сталкивался с таким?
Включается отдельно через &showSize=`1`
&showSize=`1` прописано. Но размер файлов отображается нулевой.
У меня почему-то при самом простом вызове сниппета (когда стоит private = «no») ссылка на файл не формируется, а формируется что-то типа 0.0.0.62/filename.ext. При чем при первом тесте работало, ЕМНИП. Кроме того не работает ручная сортировка драг энд дропом в админке, даже если при вызове указывать sortby=`rank`. Версия modx revo 2.6.5. Переустановка пакета не помогает…
При включенном private режиме будет формироваться ссылка без прямого доступа к файлу. Когда вы отключаете private, то будет прямой доступ.
верно, при включенном приват формируется ссылка) а что происходит при выключенном приват? и как анониму тогда скачать файл? Я имею ввиду, что у меня прямая ссылка к файлу не формируется при выключенном «приват» :)
при выключенном файл доступен напрямую. для включенного надо настраивать права доступа.
а я о чем) у меня файл не доступен напрямую) ссылка на него выглядит
<a href="//filename.ext">filename.ext</a>
, именно так показывает инспектор в хроме :)
соответственно, проблема с путями. настраивайте медиа ресурс.
Виталий, я прошу прощения, не могу найти что именно должно быть настроено для доступа по прямой ссылке. Вы бы моги подсказать?
нашел немного информации тут modx.pro/help/7972. Если будут еще вопросы — напишу. Спасибо!!! :)
А есть какие-либо способы получать данные какой именно пользователь скачал файл? Т.е. если настроено так, что скаивать приватные файлы могут только пользователи группы Members, как узнать кто из них скачал файл?
Такой учёт не предусмотрен
Доброе время суток.
makeURL true/false — в чем разница?
Не заметил разницы.
true/false — ссылка не меняется.
Спасибо
makeURL true/false — в чем разница?
Не заметил разницы.
true/false — ссылка не меняется.
Спасибо
Загружаю файлы на сервер — общие для нескольких ресурсов.
Как загружать файлы, просто в общую папку, не к конкретному ресурсу?
Спасибо
Как загружать файлы, просто в общую папку, не к конкретному ресурсу?
Спасибо
Здравствуйте. Пытаюсь в чанке FileAttachTpl работать с элементами Fenom, но ничего не выходит. Например, не получается заменить [[+size]] ни на {$_pls['size']}, ни на {$size}, такая же проблема с другими плейсхолдерами. Это принципиально не возможно или я что-то делаю не правильно?
не получится, феном используется в pdoTools сниппетах, только если переписать нужный сниппет с использованием pdotools.
Спасибо, а это требует радикальных изменений кода или просто нужно добавить какой-то класс?
1) подключить сервис
$pdoTools = $modx->getService('pdoTools');
2) заменить вызов чанка$modx->getChunk
на$pdoTools->getChunk
Это в самом сниппете, продублируй и заменяй
Попробовал, всё получилось. Спасибо.
Можете подсказать в чем дело.
Вывожу файлы через «Приватный режим/ fileattach.private ». Но почему-то файлы качаются пустые — вес файла 0 кб.
Запускаю snippet
fileattach.private — 1
fileattach.mediasource — 1
fileattach.files_path — assets/audio/
fileattach.templates — 3
Также включен траслит файлов, хотя я его не включал (при загрузке меняется имя файла)
Вывожу файлы через «Приватный режим/ 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
Также включен траслит файлов, хотя я его не включал (при загрузке меняется имя файла)
Вариантов два: Пользователь не авторизован или не входит в группу, путь к файлу изменился
Пользователь авторизован и принадлежит к группе (пробовал и без группы).
Путь не менялся.
Напрямую файл качается (без fileattach.private)
Путь не менялся.
Напрямую файл качается (без fileattach.private)
Проверил логи, проверил файл.
Почему-то регистр имени не соответствует. Файл полностью с нижним регистром, а в запросе он разный.
Почему-то регистр имени не соответствует. Файл полностью с нижним регистром, а в запросе он разный.
Возникла такая проблема: файлы с фронтэнда загружаются только через пользователей, у которых установлены неограниченные поля. Для любых других групп (даже администратора) загрузка не происходит. Права FileAttach добавлены. Создан отдельный источник файлов, этот источник указан в настройках FileAttach, к нему добавлен полный доступ для групп пользователей.
При этом в логах никаких ошибок нет.
Подскажите, пожалуйста, в чем может быть причина? Куда копать?
P.S. Реализация загрузки файлов с фронтэнда сделана с помощью примера от автора)
При этом в логах никаких ошибок нет.
Подскажите, пожалуйста, в чем может быть причина? Куда копать?
P.S. Реализация загрузки файлов с фронтэнда сделана с помощью примера от автора)
Здравствуйте.
Есть ли возможность указывать количество скачиваний файла?
Например есть фотобанк:
1. Пользователь 1 — может скачать 5 раз.
2. Пользователь 2 — может скачать 15 раз.
Может ли ваш плагин считать кол-во скачиваний, и потом запрещать доступ после лимита?
Есть ли возможность указывать количество скачиваний файла?
Например есть фотобанк:
1. Пользователь 1 — может скачать 5 раз.
2. Пользователь 2 — может скачать 15 раз.
Может ли ваш плагин считать кол-во скачиваний, и потом запрещать доступ после лимита?
Здравствуйте. Возможно считать загрузки, однако нет ограничений по количеству скачиваний.
В дополнении msFile, которое работает на базе FileAttach с miniShop2 возможно отслеживание был ли скачан файл покупателем и возможно выставлении времени действия ссылки.
В дополнении msFile, которое работает на базе FileAttach с miniShop2 возможно отслеживание был ли скачан файл покупателем и возможно выставлении времени действия ссылки.
Виталий, приветствую!
Есть ли возможность делать одноразовые ссылки?
Есть ли возможность делать одноразовые ссылки?
Доброго времени! В FA одноразовые не делаются, зато можно создавать цифровые товары через msFile и делать ссылки со сроком действия, а так же отслеживать был ли скачан файл-продукт.
Здравствуйте! Подскажите пожалуйста, будет ли работать в связке с Babel?
Чтобы при этом не пришлось дублировать документы, если для разных языков они остаются те же самые…
Чтобы при этом не пришлось дублировать документы, если для разных языков они остаются те же самые…
Здравствуйте. Привязка к документу производится на основании id ресурса, если для перевода создается новый ресурс, то файлы не привяжутся.
Добрый день! Подскажите, не получается установить пакет, не может создать записи в БД… В чем может быть дело?
Какая версия MODX, БД и кодировка/сравнение таблиц?
Modx 2.8.5, Mysql 8.0.33 кодировка utf8mb4 / utf8mb4_general_ci
Понижайте версию mysql до 5.7, тогда всё корректно установится.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.