Como armazenar um arquivo no Moodle para que ele seja acessível para um aplicativo externo?

Preciso armazenar um arquivo no Moodle. Este não é realmente um problema, é explicado aqui . O problema é que este arquivo deve ser acessível para todos. Por isso, tem que haver uma URL, por exemplo, www.mymoodlesite.com/temp/myfile.txt ou similar, a qual pode entrar no navegador e acessar o arquivo. Pensei em copiar o arquivo para a pasta moodledata / temp, mas não tenho uma URL para acessar o arquivo.

Obrigado pela sua ajuda com antecedência!

Finalmente eu poderia resolver meu problema 🙂

Eu usei um gerenciador de arquivos como este:

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

Em seguida, salvou o arquivo carregado como este:

 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)); } 

O URL para acessar o arquivo carregado pode então ser criado assim:

 file_encode_url($CFG->wwwroot . '/pluginfile.php', '/' . $this->context->id . '/mod_assignment/my_filemanager'); 

Supondo que você adicionou o elemento como este:

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

Agora assumindo que você obtém os dados como os seguintes

 $data = $lesson_form->get_data() 

Veja o código abaixo para carregar o arquivo para uma pasta especificada em seu servidor. Isso é compatível com 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 } 

Eu enfrentei o mesmo problema que você enfrenta e resolveu meu problema.

NB -> Lembre-se de enviar sua pasta de upload para 0777.

Você pode acessar os arquivos carregados através do navegador de arquivos do moodle sem ser autenticado se o seguinte for verdadeiro – Seu site do moodle forcelogin configurado como não – Seu arquivo é carregado os arquivos em arquivos de site da primeira página.

Os arquivos carregados são salvos (assumindo o Moodle1.9) em moodledata / 1 / {filepath}. Como você tem que fazê-lo programaticamente, você pode armazená-los e fazer referência a eles usando a URL /file.php/1/{filepath}. Para dizer de outra forma. Os arquivos salvos em $ CFG-> datadir. ‘/ 1 /’. Filepath são acessíveis com $ CFG-> wwwroot. ‘/ File.php / 1 /’. Filepath;

Alternativamente, se você não quiser que os arquivos apareçam nos arquivos do site da página inicial através do navegador do arquivo moodle, você poderia editar arquivo.php para esquecer as permissions de verificação para os arquivos localizados em seu diretório especial e, em vez disso, apenas sirva-os.

Espero que isso seja mais útil com esta edição.