Moodle: файлы, загруженные через File API, будут повреждены при просмотре

Поэтому я разрабатываю новый формат курса, в котором изображение ассоциируется с каждым действием в курсе и представляется визуально. Я создал формат курса, переопределил рендерер и т. Д. Все работало нормально. Тем не менее, изображения должны быть сгенерированы специально, и, поскольку они должны работать для всех существующих и будущих, я добавил некоторый дополнительный код в форму модуля общего курса, что позволяет загружать изображения.

По общему признанию некоторая борьба с моей стороны, чтобы заставить Файловый API работать, это теперь все работает отлично. Только в моем формате курса есть дополнительный заголовок, под которым вы можете загрузить одно изображение. Это хорошо сохраняется в базе данных, это не черновик, и оно отлично просматривается в моем файле dataroots, если я следую за хешем содержимого в базе данных. Он даже загружается в форму как штраф по умолчанию. Однако, если я попытаюсь работать с изображением, все тесты будут работать нормально (.is_valid_img () и т. Д.), И мне даже предложат загрузить файл. Тем не менее, когда я это делаю, он поврежден, и моя программа просмотра файлов говорит: «Критическая ошибка: не файл PNG». Излишне говорить, что это не отображается на моем сайте курса.

Когда я смотрю на файл в filedir, это очень ясно, это png. Пожалуйста, я был бы благодарен за любую помощь, так как я много пробовал и нахожусь в своем уме.

0

Решение

Мне кажется, что вы получаете какой-то вывод на странице перед отправкой файла PNG — это будет добавлено в начало файла и приведет к тому, что он не будет работать как файл PNG.

Я бы посоветовал вам открыть файл в шестнадцатеричном редакторе и проверить начало файла — он должен выглядеть так https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header, так что ищите дополнительные символы перед этим.

Относительно того, откуда появляются дополнительные символы — они могут быть очевидным предупреждением / сообщением об ошибке (которое должно быть легко отследить и исправить). В качестве альтернативы, у вас могут быть некоторые ложные операторы ‘echo’ (опять же, довольно легко отследить). Наихудшие проблемы, которые нужно найти, это дополнительные символы перед открывающими тегами ‘php’ файла где-то в вашей установке или после закрывающего тега в конце файла (именно поэтому вы никогда не должны использовать закрывающие теги PHP). Их поиск сводится к поиску во всех ваших пользовательских файлах кода, чтобы найти их.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]