Intereting Posts
Фильтрация входных данных пользователя – нужно ли фильтровать HTML? htaccess переписывание URL-адресов, игнорирование файлов Каков наилучший способ вставить несколько строк в базу данных mysql с помощью php? Как показать диалоговое окно «Сохранить как» с помощью PHP для текстовых файлов Попытка создать статический класс базы данных, доступ к которому я могу получить из любой функции вне класса PHP – разбиение строк в парах ключ / значение Как я могу автоматически создать адрес электронной почты для своих членов веб-сайта? самый чистый способ пропустить foreach, если массив пуст Поиск виртуальной машины с Xdebug, работающей для PHP в Netbeans Создание Eclipse для просмотра разных расширений файлов как PHP Является ли SPLFileObject атомарным? Codeigniter: Я хотел бы создать URL-адрес пользователя для моих пользователей, когда они создадут имя пользователя Перенаправить все запросы в web / app.php в Symfony Различные привязки WCF, их отличия и совместимость с другими платформами Как я могу использовать xdebug для отладки только одного виртуального хоста?

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

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

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

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

Я использовал filemanager следующим образом:

 $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'); 

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

 $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 } 

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

NB -> Помните, что chmod загружает папку в 0777.

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

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

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

Надеюсь, что это поможет в этом редактировании.