Changeset 105250 in spip-zone


Ignore:
Timestamp:
Jul 10, 2017, 10:03:16 AM (22 months ago)
Author:
marcimat@…
Message:

Il arrive parfois que des documents images soient téléversés avec la mauvaise extension par rapport à leur contenu réel. Par exemple recevoir un fichier.jpg alors que son contenu est du png.
On corrige cette subtilité lorsqu’on ajoute un document. Dans ce cas le nom du fichier reçoit en complément la nouvelle extension (il devient donc ici fichier.jpg.png), et on le stocke
dans le bon répertoire (ie: IMG/png/fichier.jpg.png). Quelques logs au passage de ces cas.

Location:
_core_/plugins/medias
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/action/ajouter_documents.php

    r100320 r105250  
    146146                );
    147147
    148                 $type_image = ''; // au pire
    149148                $champs['titre'] = '';
    150149                if ($titrer) {
     
    173172                $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
    174173                if (is_string($infos)) {
     174                        // c'est un message d'erreur !
    175175                        return $infos;
    176                 } // c'est un message d'erreur !
     176                }
     177
     178                // lorsqu’une image arrive avec une mauvaise extension par rapport au mime type, adapter.
     179                // Exemple : si extension .jpg mais le contenu est un png
     180                if (!empty($infos['type_image']) and $infos['type_image'] !== $champs['extension']) {
     181                        spip_log('Image `' . $file['name'] . '` mauvaise extension. Correcte : ' . $infos['type_image'], 'medias' . _LOG_INFO);
     182                        $new = copier_document($infos['type_image'], $file['name'] . '.' . $infos['type_image'], $champs['fichier']);
     183                        if ($new) {
     184                                supprimer_fichier($champs['fichier']);
     185                                $champs['fichier'] = $new;
     186                                $champs['extension'] = $infos['type_image'];
     187                                $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
     188                                if (is_string($infos)) {
     189                                        // c'est un message d'erreur !
     190                                        return $infos;
     191                                }
     192                                spip_log('> Image `' . $file['name'] . '` renommée en : ' . basename($champs['fichier']), 'medias' . _LOG_INFO);
     193                        } else {
     194                                spip_log('! Image  `' . $file['name'] . '` non renommée en extension : ' . $champs['extension'], 'medias' . _LOG_INFO_IMPORTANTE);
     195                        }
     196                }
    177197
    178198                $champs = array_merge($champs, $infos);
  • _core_/plugins/medias/inc/renseigner_document.php

    r100660 r105250  
    122122                        $res = recuperer_url($fichier, array('file' => $tmp, 'taille_max' => 512 * 1024));
    123123                        if (!$res) {
    124                                 spip_log("Echec copie du fichier $fichier");
     124                                spip_log("Echec copie du fichier $fichier", 'medias');
    125125
    126126                                return _T('medias:erreur_copie_fichier', array('nom' => $fichier));
     
    128128                        $fichier = $tmp;
    129129                } else {
    130                         spip_log("Echec copie du fichier $fichier");
     130                        spip_log("Echec copie du fichier $fichier", 'medias');
    131131
    132132                        return _T('medias:erreur_copie_fichier', array('nom' => $fichier));
  • _core_/plugins/medias/paquet.xml

    r104901 r105250  
    22        prefix="medias"
    33        categorie="multimedia"
    4         version="2.20.6"
     4        version="2.20.7"
    55        etat="stable"
    66        compatibilite="[3.2.0-dev;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.