如何在Moodle中存储文件以便外部应用程序可以访问?

时间:2011-07-12 15:16:47

标签: php file file-io moodle

我需要在Moodle中存储一个文件。这不是一个真正的问题,它解释为here。问题是每个人都必须可以访问此文件。因此,必须有一个URL,例如www.mymoodlesite.com/temp/myfile.txt之类的,可以在一个浏览器中输入并访问该文件。我想把文件复制到moodledata / temp文件夹,但是我没有URL来访问文件..

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

最后我可以解决我的问题: - )

我使用了像这样的文件管理器:

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

答案 1 :(得分:2)

假设你添加了这样的元素:

$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。 - >请记住将您的上传文件夹chmod为0777。

答案 2 :(得分:0)

如果以下情况属实,您可以访问通过moodle的文件浏览器上传的文件,而无需进行身份验证 - 你的moodle网站的forcelogin设置为no - 您的文件上传了首页网站文件中的文件。

在moodledata / 1 / {filepath}中保存上传的文件(假设Moodle1.9)。由于您必须以编程方式执行此操作,因此可以将它们存储在那里并使用url /file.php/1/ {filepath}引用它们。换句话说。保存到$ CFG-> datadir。' / 1 /' .filepath的文件可通过$ CFG-> wwwroot。' /file.php/1 /' .filepath访问;

或者,如果您不希望文件通过moodle文件浏览器显示在首页站点文件中,您可以编辑file.php以忘记检查位于特殊目录中的文件的权限,而只是为它们提供服务起来。

希望这对此编辑更有帮助。