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.