2017-06-07 3 views
0

Je développe donc un nouveau format de cours, dans lequel une image est associée à chaque activité dans un cours, et présentée visuellement. J'ai créé le format du cours, remplacer le moteur de rendu, etc. Cela a bien fonctionné. Cependant, les images sont censées être générées sur mesure et, comme elles doivent fonctionner pour tout le monde, je mets du code supplémentaire dans le module de cours général, permettant le téléchargement d'une image.Moodle: Les fichiers téléchargés via File API sont corrompus lors de la visualisation

Après avoir eu quelques difficultés de ma part à faire fonctionner l'API File, tout fonctionne désormais très bien. Seulement dans mon format de cours, il y a un en-tête supplémentaire, sous lequel vous pouvez télécharger une seule image. Ceci est bien enregistré dans la base de données, il n'est pas dans le brouillon et il est visible dans mes fichiers de données si je suis le contenthash dans la base de données. Il est même chargé dans le formulaire comme amende par défaut. Cependant, si j'essaie de travailler avec l'image, tous les tests fonctionnent bien (.is_valid_img() etc) et on me propose même de télécharger un fichier. Cependant, quand je le fais, il est corrompu et mon visualiseur de fichiers dit: "Erreur critique: pas un fichier png". Inutile de dire qu'il n'est pas affiché sur mon site de cours actuel.

Lorsque je regarde le fichier dans filedir, c'est très clairement un png. S'il vous plaît, je serais reconnaissant pour toute aide, puisque j'ai essayé beaucoup et suis à mon esprit.

Répondre

1

Il me semble que vous obtenez une sorte de sortie sur la page avant l'envoi du fichier PNG - cela serait ajouté au début du fichier et ne le ferait pas fonctionner comme un fichier PNG.

Je vous suggère d'ouvrir le fichier dans un éditeur hexadécimal et de vérifier le début du fichier - il devrait ressembler à https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header, alors cherchez des caractères supplémentaires avant cela. En ce qui concerne l'origine des caractères supplémentaires, il peut s'agir d'un message d'avertissement/d'erreur évident (qui devrait être facile à repérer et à corriger). Alternativement, vous pouvez avoir quelques déclarations 'écho' errantes (encore une fois, assez facile à traquer). Les pires problèmes à trouver sont des caractères supplémentaires avant l'ouverture des balises 'php' d'un fichier quelque part dans votre installation ou après la balise de fermeture à la fin d'un fichier (c'est pourquoi vous ne devriez jamais utiliser les balises PHP). Trouver ceux-ci se résume à la recherche dans tous vos fichiers de code personnalisés pour les localiser.

+0

Mec, merci beaucoup. Oui, c'était juste un var_dump aléatoire, qui a été imprimé à l'URL de l'image, que je n'ai pas pris en compte, parce que je ne pensais pas que le contenu de l'image serait généré à cet endroit. –

+0

Le contenu de l'image n'est pas généré ici, mais il est chargé à partir du stockage du serveur et poussé vers le navigateur de l'utilisateur à partir de là, ce qui signifie qu'il ne doit rien sortir avant le contenu du fichier. – davosmith

+0

Ah bon à savoir, ils devraient rendre cela plus clair sur la documentation à mon avis. En tout cas, merci pour votre aide! :) –