2016-08-25 7 views
0

Я добавил пользовательский столбец для хранения логотипа компании. Я использовал файл апи из Мудл как:Получить путь загруженного изображения в Moodle

$mform->addElement('filepicker', 'certificatelogo', 'Company Logo', null, 
       array('maxbytes' => $maxbytes, 'accepted_types' => '*')); 
$mform->setDefault('certificatelogo', '0'); 
$mform->addHelpButton('certificatelogo', 'certificatelogo', 'certificate'); 

После того, как форма отправлена ​​Itemid будет храниться в пользовательской колонке. Скажем, «648557354»

Теперь мне нужно получить изображение для печати логотипа на сертификате. Как я могу получить путь к изображению из itemid? Нужно ли хранить любую другую информацию для получения изображения?

ответ

2

Возвращаемый элемент является временным идентификатором области черновика, в которой файл хранится во время отображения формы. Вам нужно скопировать файл в свое «реальное» место, когда форма отправлена, иначе файл будет автоматически удален через несколько дней (и он будет доступен только пользователю, который первоначально загрузил его).

Я всегда рекомендую использовать элемент filemanager, если вы планируете хранить файл (элементы filepicker для файлов, которые вы хотите обработать и отбросить, например, при загрузке данных файла CSV для анализа и добавления в файл база данных).

Подробная информация о том, как использовать его здесь: https://docs.moodle.org/dev/Using_the_File_API_in_Moodle_forms#filemanager

Но основные шаги:

  1. Скопируйте все существующие файлы из «реальной» области к проекту области (file_prepare_standard_filemanager).
  2. Показать форму.
  3. При отправке скопируйте файлы из области черновика в «реальную» область (файл_postupdate_standard_filemanager).
  4. Если вы хотите отобразить файл для пользователя, получите список файлов, хранящихся в области файлов (определяемых компонентом, файловой системой, контекстом и, необязательно, itemid, которые вы использовали в файле_prepare_standard_filemanager и file_postupdate_standard_filemanager). Вы можете сделать это с помощью: $ fs = get_file_storage(); $ FS-> get_area_files().
  5. Для этих файлов (возможно, только 1 файл, в вашем случае), сгенерируйте URL с помощью moodle_url :: make_pluginfile_url.
  6. Убедитесь, что ваш плагин имеет функцию PLUGINNAME_pluginfile() в lib.php, чтобы проверять входящие запросы файлов, выполнять проверки безопасности на них, а затем обслуживать файл.

Существует разумный пример всего этого на: https://github.com/AndyNormore/filemanager

 Смежные вопросы

  • Нет связанных вопросов^_^