Upload image échoué ?

Upload image échoué ?

par Antonella De Chiara,
Nombre de réponses : 4

Bonjour,

J’aurais besoin de votre aide si possible  œil au beurre noir

Je n’arrive pas à comprendre pourquoi mon image n’est pas enregistrée dans mon form.

J’explique depuis le début: j’ai créé un format de cours qui sert à afficher les images des activités (et pas des sections comme le plugin gridimage).

Maintenant, je n’arrive pas à afficher mon image correctement, et je suspecte qu’elle n’est pas du tout enregistrée dans aucun dossier. Lors de l’upload de l’image je n’ai aucun message d’erreur, j’ai débogué ligne par ligne mais les informations semblent correctes.

Effectivement j’ai bien un fichier qui se génère dans le folder temp que j’ai choisi, qui après se déplace dans le folder filedir des datas.

Les souci c’est que quand je cherche l’image celle-ci semble être inexistante.


Donc:


Dans mon editimage.php :


$courseformat->create_mod_image($tempfile, $storedfilerecord, $modimage); // fonction pour créer l'image

La fonction create_mod_image effectue correctement sont try catch et à la fin elle appelle la setup_displayed_image :


public function setup_displayed_image($modimage, $contextid, $settings) {
[....]
// ICI LA FIN DE LA FONCTION
if ($convertsuccess == true) {
        // Now safe to delete old file if it exists.
        if ($oldfile = $fs->get_file($contextid, 'course', 'format', $modimage->modid, $gridimagepath,
           ($modimage->displayedimageindex - 1) . '_' . $modimage->image)) {
           $oldfile->delete();
        }
        $DB->set_field('format_activitygrid_icon', 'displayedimageindex', $modimage->displayedimageindex,
           array('modid' => $modimage->modid));
     } else {
        print_error('cannotconvertuploadedimagetodisplayedimage', 'format_activitygrid',
           $CFG->wwwroot . "/course/view.php?id=" . $this->courseid);
     }
  } else {
     $DB->set_field('format_activitygrid_icon', 'image', null, array('modid' => $modimage->modid));
  }
  return $modimage;  // So that the caller can know the new value of displayedimageindex.
}

Les datas je reçois :

D:\wamp\www\mywebsite\course\format\myformatgrid\lib.php:1061:
object(stdClass)[312]
 public 'id' => string '9' (length=1)
 public 'image' => string 'agi_3391322-madden-nfl-19.jpg' (length=29)
 public 'displayedimageindex' => int 34
 public 'modid' => string '379' (length=3)
 public 'courseid' => string '6' (length=1)
 public 'newimage' => string 'agi_3391322-madden-nfl-19.jpg' (length=29)

Et ces lignes-ci devraient servir pour l’affichage de l’url :

$imgurl = moodle_url::make_pluginfile_url(
 $contextid,
 'course',
 'format',
 $mod->id,
 $gridimagepath,
 $modimage->displayedimageindex . '_' . $modimage->image
);

Merci pour votre aide ! sourire

Moyenne des évaluations  -
En réponse à Antonella De Chiara

Re: Upload image échoué ?

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Lythande,

As-tu regardé du côté de la documentation et plus particulièrement de la page File API ?

Dedans il est indiqué dans get_file que l'on doit préciser le composant qui fait appel au fichier. Aussi, je me demande si tu ne dois pas appeler tes fichiers en fonction d'un composant 'course_format' que tu développes ? 

À bientôt,
Patrick

En réponse à Patrick Lemaire

Re: Upload image échoué ?

par Antonella De Chiara,

Bonjour Patrick,

Merci pour ta réponse.

Bien sur que l'ai regardé la page File API, c'est la première chose que j'ai faite sourire

Et effectivement c'est ça que je ne comprend pas, j'avais tous paramétré avec format_myplugin, vu que ça ne marchait pas j'ai essayé myplugin tout court. Je n'avais pas pensé au 'course_format'.

Du coup au lieu d'utiliser le filepicker j'ai testé avec le filemanager.

J'ai utilisé cette procédure :

if (empty($entry->id)) {
    $entry = new stdClass;
    $entry->id = null;
}
 
$draftitemid = file_get_submitted_draft_itemid('imagefile');
 
file_prepare_draft_area($draftitemid, $context->id, 'course_format_myplugin', 'imagefile', $entry->id,
                        array('subdirs' => 0, 'maxbytes' => $maxbytes, 'maxfiles' => 1));
 
$entry->attachments = $draftitemid;
 
$mform->set_data($entry);

Store updated set of files

if ($data = $mform->get_data()) {
    // ... store or update $entry
    file_save_draft_area_files($data->imagefile, $context->id, 'course_format_myplugin', 'imagefile',
                   $entry->id, array('subdirs' => 0, 'maxbytes' => $maxbytes, 'maxfiles' => 1));
}
Et je vois bien que mon image est enregistrée :

*

Ce qui est bizarre c'est qu'elle n’apparaît pas dans les fichiers récents :/

Moyenne des évaluations Utile (2)