| Subcribe via RSS

Cambiar la extensión de varios archivos con PHP

Noviembre 26th, 2006 Posted in oscommerce, php, zencart

Suele suceder a muchos de mis clientes que usan OsCommerce y Zen-Cart que cuando suben las imágenes de los productos vía FTP la extensión de los archivos está en mayúsculas pero en la base de datos aparece el mismo archivo con la extensión en minúsculas. Resultado: la imagen no se puede encontrar. Algunos de ellos optan por la solución de renombrar las imágenes y volver a subirlas pero, dado que era muy incómodo, escribí este pequeño código que renombra las imágenes directamente en el servidor:

// Corregir las extensiones de los ficheros de imágenes. Cambiar las extensiones en mayúsculas por minúsculas.

$directorio_imagenes = 'images/';
if ($directorio = dir($directorio_imagenes))
{
	while ($fichero = $directorio->read())
	{
		$info_fichero = pathinfo($fichero);
		// Si la extensión no está en minúsculas ponerla en minúsculas
		if (isset($info_fichero['extension']) && $info_fichero['extension']!=strtolower($info_fichero['extension']))
		{
			$info_fichero['basename_we'] = substr($info_fichero['basename'], 0, -(strlen($info_fichero['extension']) + ($info_fichero['extension'] == '' ? 0 : 1)));
			rename(
				$directorio_imagenes . $info_fichero['basename'],
				$directorio_imagenes . $info_fichero['basename_we'] . '.' . strtolower($info_fichero['extension'])
				);
			echo '<br/>' . $info_fichero['basename'] . ' cambiado.';

		}
	}
}

El script busca en el directorio especificado los directorios con la extensión en mayúsculas y los cambia a minúsculas. La “magia” se hace con este if:

if (isset($info_fichero['extension']) && $info_fichero['extension']!=strtolower($info_fichero['extension']))

que compara la extensión del fichero con su versión en minúsculas. Esto detecta las extensiones como: .JPG, Jpg, jpG y las convierte a .jpg.

Un sencillo programita que puede ahorrarnos muchas horas de trabajo. Esta versión sólo busca en un único directorio, no sería muy difícil modificarlo para que busque también en los subdirectorios.

Entradas relacionadas

  1. Cambiar la extensión de varios archivos en Linux
  2. Instalar nuevos tipos de letras en Ubuntu
  3. Cambiar el tamaño de un grupo de imágenes en Ubuntu
  4. Arrancar un programa automáticamente al entrar en Ubuntu (Gnome)
  5. La consola de Linux - cambiar directorios rápidamente
Valoración:
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Sin calificar)
Loading ... Loading ...

4 Responses to “Cambiar la extensión de varios archivos con PHP”

  1. Oscar Gonzalez Rivero Says:

    es muy bueno el articulo pero tambien queria ver si me podrias ayudar para saber como puedo cambiar las extensiones no solo de mayusculas a minusculas sino de una extension .pdf a .eml


  2. gorkau Says:

    La parte que cambia la extensión del fichero es:

    strtolower($info_fichero['extension'])

    puedes sustituirla por, por ejemplo ‘eml’.

    También tendrías que cambiar la parte:

    $info_fichero['extension']!=strtolower($info_fichero['extension'])

    por:

    $info_fichero['extension']==’pdf’


  3. Jrojas Says:

    Comunico que he cambiado un archivo con extension tif a gif satisfactoriamente con el script mensionado anteriomente, pero lo que deseo es poder no solo renombrar el archivo, sino tambien convertir de tif a gif que es muy diferente renombrarlo, si alguien me puede ayudar se lo agradezco.


  4. Jrojas Says:

    Lo que deseo es convertir un archivo tif a gif. gracias


Leave a Reply