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
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+22 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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);

+2 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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));
		}
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<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"