Как сохранить файл в Moodle, чтобы он был доступен для внешнего приложения? - PullRequest
1 голос
/ 12 июля 2011

Мне нужно сохранить файл в Moodle. Это на самом деле не проблема, это объясняется здесь . Проблема в том, что этот файл должен быть доступен каждому. Следовательно, должен быть URL, например, www.mymoodlesite.com/temp/myfile.txt или подобное, которое можно ввести в браузере и получить доступ к файлу. Я думал о копировании файла в папку moodledata / temp, но у меня нет URL для доступа к файлу.

Заранее спасибо за помощь!

Ответы [ 3 ]

4 голосов
/ 03 января 2012

Наконец-то я смог решить свою проблему: -)

Я использовал файловый менеджер так:

$mform->addElement('filemanager', 'my_filemanager', 'Upload a file', null, array('maxbytes' => $CFG->maxbytes, 'maxfiles' => 1, 'accepted_types' => array('*.zip')));

Затем сохраненный загруженный файл выглядит так:

if ($draftitemid = file_get_submitted_draft_itemid('my_filemanager')) {
    file_save_draft_area_files($draftitemid, $context->id, 'mod_assignment', 'my_filemanager', 0, array('subdirs' => false, 'maxfiles' => 1));
}

URL для доступа к загруженному файлу может быть создан следующим образом:

file_encode_url($CFG->wwwroot . '/pluginfile.php', '/' . $this->context->id . '/mod_assignment/my_filemanager');
2 голосов
/ 16 декабря 2011

Предполагается, что вы добавили элемент следующим образом:

$mform->addElement('filepicker', 'file', "Upload a Document", null, array('maxbytes' => 1024*1024, 'accepted_types' =>array('*.png', '*.jpg', '*.gif','*.jpeg', '*.doc', '*.rtf','*.pdf','*.txt')));

Теперь при условии, что Вы получите данные как следующие

$data = $lesson_form->get_data()

См. Код ниже, чтобы загрузить файл в указанную папку на вашем сервере. Это совместимо с Moodle 2.2 +

$realfilename = $lesson_form->get_new_filename('file'); // this gets the name of the file

    $random =rand(); // generate some random number
    $new_file = $random.'_'.$realfilename; //add some random string to the file
    $dst = "uploads/$new_file";  // directory name+ new filename

    if($realfilename !=''){  // checking this to see if any file has been uploaded

        save_files($dst); // moodle function to save a file in given folder

    }

Я столкнулся с той же проблемой, с которой вы столкнулись, и она решила мою проблему.

N.B. -> Не забудьте изменить папку загрузки на 0777.

0 голосов
/ 02 августа 2011

Вы можете получить доступ к файлам, загруженным через файловый браузер moodle, без проверки подлинности, если верно следующее: - на вашем сайте moodle установлено значение forcelogin - no - ваш файл загружен в файлы на главной странице файлов сайта.

Загруженные файлысохранено (при условии Moodle1.9) в moodledata / 1 / {filepath}.Так как вы должны делать это программно, вы можете хранить их там и ссылаться на них, используя url /file.php/1/ndomfilepath}.Сказать это по-другому.Файлы, сохраненные в $ CFG-> datadir. '/ 1 /'. Filepath, доступны с помощью $ CFG-> wwwroot. '/ File.php / 1 /'. Filepath;

В качестве альтернативы, если вы не хотитефайлы, которые будут отображаться в файлах вашего сайта на главной странице через браузер файлов Moodle, вы можете отредактировать файл file.php, чтобы забыть проверить права доступа к файлам, расположенным в вашем специальном каталоге, и вместо этого просто подавать их.

Надеюсь, это большеполезно с этим редактированием.

...