Valider 4d619863 rédigé par cedric@yterium.com's avatar cedric@yterium.com
Parcourir les fichiers

Report de r105250 : Il arrive parfois que des documents images soient...

Report de r105250 : 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 e37b5a54
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
@@ -146,7 +146,6 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
			'distant' => 'non'
		);

		$type_image = ''; // au pire
		$champs['titre'] = '';
		if ($titrer) {
			if ($titrer_document = charger_fonction('titrer_document', 'inc', true)) {
@@ -177,8 +176,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
@@ -122,13 +122,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.11.47"
	version="2.11.48"
	etat="stable"
	compatibilite="[3.1.0;3.1.*]"
	logo="prive/themes/spip/images/portfolio-32.png"