Moodle:通过File API上传的文件在查看时会损坏

时间:2017-06-07 07:25:30

标签: php file moodle moodle-api totara

所以我正在开发一种新的课程格式,其中图片与课程中的每个活动相关联,并以视觉方式呈现。我创建了课程格式,覆盖了渲染器等。这一切都很好。但是,图像应该是自定义生成的,因为它必须适用于所有现有和未来,我将一些额外的代码放入一般课程模块表单中,从而启用图像上传。

不可否认的是,为了让File API正常运行,我现在一切正常。只有在我的课程格式中,还有一个额外的标题,您可以在其中上传单个图像。这可以很好地保存到数据库中,它不在草稿中,如果我按照数据库中的contenthash,它可以在我的dataroots filedir中完美查看。它甚至被加载到表单中作为默认罚款。但是,如果我尝试使用图像,所有测试运行正常(.is_valid_img()等),我甚至可以下载文件。但是,当我这样做它已损坏,我的文件查看器说:“严重错误:不是一个png文件”。不用说它没有显示在我的实际课程网站上。

当我查看文件中的文件时,它显然是一个png。拜托,我会感谢任何帮助,因为我已经尝试了很多,我的智慧结束了。

1 个答案:

答案 0 :(得分:2)

听起来我觉得你在发送PNG文件之前会在页面上获得某种输出 - 这会被添加到文件的开头并导致它不能用作PNG文件。

我建议您在十六进制编辑器中打开文件并检查文件的开头 - 它应该看起来像https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header,所以在此之前寻找额外的字符。

至于额外字符的来源 - 它们可能是一个明显的警告/错误消息(应该很容易追踪和修复)。或者,您可能会有一些流浪的“回声”声明(再次,相当容易追踪)。要找到的最糟糕的问题是在安装中的某个文件的打开'php'标记之前或文件末尾的结束标记之后的额外字符(这就是为什么你永远不应该使用关闭的PHP标记)。找到这些将归结为搜索所有自定义代码文件以找到它们。