Skip to content
Extraits de code Groupes Projets
Valider b863f125 rédigé par marcimat@rezo.net's avatar marcimat@rezo.net
Parcourir les fichiers

Il arrive parfois que des documents images soient téléversés avec la mauvaise...

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.
parent 53c3ad90
Aucune branche associée trouvée
Étiquettes v2.10.5
Aucune requête de fusion associée trouvée
......@@ -145,7 +145,6 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
'distant' => 'non'
);
$type_image = ''; // au pire
$champs['titre'] = '';
if ($titrer) {
$titre = substr($nom_envoye, 0, strrpos($nom_envoye, '.')); // Enlever l'extension du nom du fichier
......@@ -172,8 +171,29 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
*/
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
if (is_string($infos)) {
// c'est un message d'erreur !
return $infos;
} // c'est un message d'erreur !
}
// lorsqu’une image arrive avec une mauvaise extension par rapport au mime type, adapter.
// Exemple : si extension .jpg mais le contenu est un png
if (!empty($infos['type_image']) and $infos['type_image'] !== $champs['extension']) {
spip_log('Image `' . $file['name'] . '` mauvaise extension. Correcte : ' . $infos['type_image'], 'medias' . _LOG_INFO);
$new = copier_document($infos['type_image'], $file['name'] . '.' . $infos['type_image'], $champs['fichier']);
if ($new) {
supprimer_fichier($champs['fichier']);
$champs['fichier'] = $new;
$champs['extension'] = $infos['type_image'];
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
if (is_string($infos)) {
// c'est un message d'erreur !
return $infos;
}
spip_log('> Image `' . $file['name'] . '` renommée en : ' . basename($champs['fichier']), 'medias' . _LOG_INFO);
} else {
spip_log('! Image `' . $file['name'] . '` non renommée en extension : ' . $champs['extension'], 'medias' . _LOG_INFO_IMPORTANTE);
}
}
$champs = array_merge($champs, $infos);
......
......@@ -121,13 +121,13 @@ function renseigner_taille_dimension_image($fichier, $ext, $distant = false) {
$tmp = _DIR_TMP . md5($fichier);
$res = recuperer_url($fichier, array('file' => $tmp, 'taille_max' => 512 * 1024));
if (!$res) {
spip_log("Echec copie du fichier $fichier");
spip_log("Echec copie du fichier $fichier", 'medias');
return _T('medias:erreur_copie_fichier', array('nom' => $fichier));
}
$fichier = $tmp;
} else {
spip_log("Echec copie du fichier $fichier");
spip_log("Echec copie du fichier $fichier", 'medias');
return _T('medias:erreur_copie_fichier', array('nom' => $fichier));
}
......
<paquet
prefix="medias"
categorie="multimedia"
version="2.20.6"
version="2.20.7"
etat="stable"
compatibilite="[3.2.0-dev;3.2.*]"
logo="prive/themes/spip/images/portfolio-32.png"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter