Descargar imágenes con ficheros .php y .csv

Php para imagenes

Descargar y renombrar imágenes.

Por que necesitamos las imágenes.

Hoy me ha llamado uno de mis clientes, están implantando una nueva aplicación para sus vendedores un catalogo virtual interactivo, a tiempo real y con múltiples opciones de configuración sobre disponibilidad, ventas cruzadas y un amplio etcétera.

Para completar el catalogo quieren las imágenes de todas las referencias de una de las marcas que distribuyen, y que ademas cada una de las imágenes lleven la referencia de su sistema de gestión(ERP)

Un problema para descargar imágenes de forma masiva desde .csv.

Lógicamente el problema no es descargar imágenes, tenemos un .csv en que ya tenemos relacionados la referencia de los artículos y la url de las imágenes por lo que no sería problema y descargando una a una, salvo que tengas más de 3000 .

Solución del problema con PHP

Seguro que hay otras opciones, podemos encontrar solución con la mayoria de lenguajes de programación, pero esta vez lo he planteado con PHP ya que lo estaba usando en ese momento para otro proyecto.

Así que os pongo el código usado:

<?php 
//marcamos un tiempo de ejecución para evitar errores por tiempo para csv grandes
ini_set('max_execution_time', 80000);

//iniciamos la variable $linea 
$linea = 0;

//Abrimos nuestro archivo fopen("dirección de nuestro archivo","r")
$archivo = fopen("C:\Users\Tienda\Desktop\x.csv", "r");

//mientras sigan habiendo lineas en el csv que acabamos de abrir
while (($datos = fgetcsv($archivo, ",")) == true) 
{
  $num = count($datos);
  $linea++;

  //Recorremos las columnas de esa linea
  for ($columna = 0; $columna < $num; $columna++) 
      {
		 //metemos en $texto la columna
         $texto=$datos[$columna];

		 //Creamo $ref con la dirección de destino y le sumamos referencia de la columna que separamos con substr
		 $ref = 'C:\Users\Tienda\Desktop\img\\' . substr($texto,0,9). ".jpg";
		 //Creamos $url con la url que contiene la columna.
		 $url = substr($texto,10,strlen($texto));

		 //Obtenemos archivo de la url
		 $source = file_get_contents($url);

			//Guardamos el archivo $source en la dirección de nuestro equipo con $ref.
			file_put_contents($ref, $source,FILE_APPEND);

			//escribimos la url descargada para contarla
			echo 'Se ha descargado el CSV'. $url .'<br />' ;
     }
}

//Cerramos el archivo
fclose($archivo);
?>

Una vez tenemos este código guardado en un archivo .php lo ejecutamos con el navegador y Apache. Veremos como nuestra carpeta se llena de imágenes que señala las lineas del csv.

Recursos usados.

Manual PHP para obtener las lineas del csv.
W3schools para guardar la imagen con el nombre especifico.

Si tienes dudas o quieres más ayuda no dudes en preguntar a través del foro o por correo.

Compartir

Otros post

Override de prestashop

Los Override de Prestashop

Modificar clases, métodos o módulos de Prestashop puede ser una tarea peligrosa. Utiliza los Override para evitar romper tu tienda.

¿Quién eres?