0

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

诚然,在我努力让 File API 正常工作之后,现在一切正常。只有在我的课程格式中,有一个附加标题,您可以在该标题下上传单个图像。这可以很好地保存到数据库中,它不在草稿中,如果我按照数据库中的 contenthash 操作,它可以在我的数据根文件目录中完美查看。它甚至作为默认罚款加载到表单中。但是,如果我尝试使用该图像,所有测试都运行良好(.is_valid_img()etc),我什至可以下载文件。但是,当我这样做时,它已损坏并且我的文件查看器说:“严重错误:不是 png 文件”。不用说它没有显示在我的实际课程网站上。

当我查看filedir中的文件时,很明显它是一个png。拜托,我会感谢任何帮助,因为我已经尝试了很多并且我无能为力。

4

1 回答 1

3

在我看来,您在发送 PNG 文件之前在页面上获得了某种输出 - 这将被添加到文件的开头并导致它不能作为 PNG 文件工作。

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

至于额外字符的来源 - 它们可能是明显的警告/错误消息(应该很容易追踪和修复)。或者,您可能有一些杂散的“回声”语句(同样,很容易追踪)。最糟糕的问题是安装中某个文件的开始“php”标签之前或文件末尾的结束标签之后的额外字符(这就是为什么你永远不应该使用结束 PHP 标签的原因)。找到这些将归结为搜索所有自定义代码文件以找到它们。

于 2017-06-07T07:43:54.567 回答