Foros del Web » Programando para Internet » PHP »

Generar archivo descargable en formato .zip

Estas en el tema de Generar archivo descargable en formato .zip en el foro de PHP en Foros del Web. Hola!! No sé si estoy en el foro correcto, pero creo que es con php. Lo que quiero, es que los user de mi web ...
  #1 (permalink)  
Antiguo 01/07/2008, 03:53
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Generar archivo descargable en formato .zip

Hola!!

No sé si estoy en el foro correcto, pero creo que es con php.

Lo que quiero, es que los user de mi web puedan subir sus fotos.

Luego las muestro en la web. Al lado de cada una pondría un checkbox.

Los users marcan el ckeckbox de las fotos que quieren descargar, y pulsan "Descargar", entonces, se genera un archivo comprimido .zip y se descarga. ¿Cómo lo haría?.

La sección de otro color es en la que no tengo dudas.

He visto esto en el servidor ftp de mi@. Ahora les muestro una imagen. .....Ya la tengo, aquí

Gracias de aNtEmAnO
  #2 (permalink)  
Antiguo 01/07/2008, 08:22
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

Hola foro!!

He encontrado esto:

por si alguien quiere el zipfile.php

Lo que está en otro color es lo que he puesto yo:

<?php
require ("./zipfile.php");

$zipfile = new zipfile();

$zipfile->add_dir("http://www.forosdelweb.com/images/");


$checks=$_POST['checks'];

while ($ckecks){
sentencias a ejecutar
}



$zipfile->add_file(implode("",file("img01.jpg")), "img/01.jpg");

$zipfile->add_file(implode("",file("img02.jpg")), "img/02.jpg");

$zipfile->add_file(implode("",file("img03.jpg")), "img/03.jpg");



header("Content-type: application/octet-stream");

header("Content-disposition: attachment; filename=fotos.zip");

echo $zipfile->file();

?>

Quiero hacer un while con la variable checks para ir añadiendo imágenes.

Cómo se hace un while con una variable??
  #3 (permalink)  
Antiguo 01/07/2008, 08:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Generar archivo descargable en formato .zip

Es mejor si usar un foreach:
Código PHP:
foreach( $_POST['checks'] as $check ) {
       echo 
$check;

Saludos.
  #4 (permalink)  
Antiguo 01/07/2008, 08:49
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

No se lo que es, pero buscaré info. Gracias.

Ahora te cuento que tal.
  #5 (permalink)  
Antiguo 01/07/2008, 08:55
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

Bueno, he puesto así, pero no funciona:

Código PHP:
<?php
echo "<form action='zip.php' method='post' /><input type='checkbox' name='colores'  value='rojo'>" "<img src='./red.gif' />" "<input type='checkbox' name='colores'  value='green'>" "<img src='./green.gif' />" "<input type='checkbox' name='colores'  value='blue'>" "<img src='./blue.gif' /><input type='submit' value='Descargar'></form>";
?>
<?php
 
require ("./zipfile.php");

      
$zipfile = new zipfile();

      
$zipfile->add_dir("http://www.forosdelweb.com/images/");
     


foreach( 
$_POST['colores'] as $check ) {
 

$zipfile->add_file(implode("",file("" . echo $check ".gif")), "img/01.gif");


       

      
header("Content-type: application/octet-stream");

      
header("Content-disposition: attachment; filename=fotos.zip");

      echo 
$zipfile->file();

?>
  #6 (permalink)  
Antiguo 01/07/2008, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Generar archivo descargable en formato .zip

Hola yonolose,

Que tipo de dato guardas en $_POST['colores'], haz un var_dump( $_POST['colores'] ); para que podamos ver su estructura.

Saludos.
  #7 (permalink)  
Antiguo 01/07/2008, 11:45
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

No muestra nada:

Código PHP:
var_dump $_POST['colores'] ); 
Creo que falla esto:

var_dump ( $_POST['colores'] );



foreach( $_POST['colores'] as $check ) {


$zipfile->add_file(implode("",file("" . echo $check . ".gif")), "img/01.gif");

}
  #8 (permalink)  
Antiguo 01/07/2008, 11:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Generar archivo descargable en formato .zip

Si no muestra nada es que no hay nada en tu variable $_POST['colores'], revisa que estés enviando un arreglo y se llame colores[].

Saludos.
  #9 (permalink)  
Antiguo 01/07/2008, 12:01
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

....Perdona...

Sí mostraba, pero la hacía y encima había una imagen "verde", he dejado esto solo y me aparece:

string(5) "green"
  #10 (permalink)  
Antiguo 01/07/2008, 12:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Generar archivo descargable en formato .zip

Necesitas que ese dato sea un arreglo para poder ciclarlo, si te fijas tu dato es un string, un string no lo puedes recorrer con un foreach.

Saludos.
  #11 (permalink)  
Antiguo 01/07/2008, 12:11
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

... Es que no se si así es como se consigue lo que quiero.

Una foto


Quiero que el user seleccione los archivos a descargar, y los descargue comprimidos con este script.

¿Cómo haría un arreglo desde un form?
  #12 (permalink)  
Antiguo 01/07/2008, 12:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Generar archivo descargable en formato .zip

lo que pides no es tan sencillo.... pero tampoco imposible si te pones a estudiar

de verdad, no creo que alguien se ponga a fabricarte todo el script que necesitas así por que si.... pero bueno, espero busques y logres tu objetivo... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 01/07/2008, 12:18
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

Ya... claro que sé que nadie me hará el script.

Pero no encuentro, estoy buscando:

crear array php mediante form

... y cosas parecidas, pero no encuentro.
  #14 (permalink)  
Antiguo 01/07/2008, 12:22
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

me he planteado hacerlo así:

hago un while para mostrar las imágenes.
Junto a cada imagen pongo un checkbox, con nombre: linea0. El siguiente: linea1, el siguiente linea2.

Luego hago un array con todos los elementos marcados.

Con ese array hago el script.

Pero no sé crear un array a partir de los nombres.

Cómo hago un array teniendo los valores.??

Tengo esto para hacer el arreglo: $a = ("val1", "val2", "val3");

Teniendo los valores, ¿Cómo los pongo ahí separados por comas?

explode o implode????
  #15 (permalink)  
Antiguo 01/07/2008, 12:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Generar archivo descargable en formato .zip

Hola yonolose,

Como te comento debes de agregar los checkbox con nombre de array:
Código HTML:
Imagen1: <input type="checkbox" name="imagenes[]" value="imagen1.jpg" />
Imagen2: <input type="checkbox" name="imagenes[]" value="imagen2.jpg" />
Imagen3: <input type="checkbox" name="imagenes[]" value="imagen3.jpg" />
Imagen4: <input type="checkbox" name="imagenes[]" value="imagen4.jpg" />
Imagen5: <input type="checkbox" name="imagenes[]" value="imagen5.jpg" /> 
Después en PHP:
Código PHP:
echo "Imágenes seleccionadas:<br />";
foreach( 
$_POST['imagen'] as $imagen ) {
       echo 
"$imagen</br>";

Saludos.
  #16 (permalink)  
Antiguo 01/07/2008, 12:36
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

Gracias. Funciona, pero he marcado tres fotos y solo me ha descargado una (la última).

Iré probando.
  #17 (permalink)  
Antiguo 01/07/2008, 12:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Generar archivo descargable en formato .zip

Lo siento el código PHP es:
Código PHP:
foreach( $_POST['imagenes'] as $imagen ) {
       echo 
"$imagen</br>";

Saludos.
  #18 (permalink)  
Antiguo 02/07/2008, 02:57
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

Ok, hago el foreach y me sale esto:

redgreenblue

...¿Qué hago para que aparezca esto?

$zipfile->add_file(implode("",file("red.gif")), "img/01.gif");

$zipfile->add_file(implode("",file("green.gif")), "img/01.gif");

$zipfile->add_file(implode("",file("blue.gif")), "img/01.gif");

.... Podría poner los values(valores) del form acabados en comas, y luego hago explode(), para separar las cadenas entre coma y coma.

Código PHP:
$explode explode(",",  $_POST['imagenes']);

foreach( 
$explode as $imagen ) {
       echo 
"$imagen</br>";
       } 
Me devuelve la palabra Array dividida en cinco trozos, es decir, una letra en cada trozo.

$imagen[0] //A

$imagen[2] //r

$imagen[5] //y

... Lo que busco es que cada palabra separada por coma se guarde en el array.

Luego hago un while y cada vez voy mostrando una fila de insertar hasta que el array esté vacío.

Última edición por yonolose; 02/07/2008 a las 03:47
  #19 (permalink)  
Antiguo 02/07/2008, 05:48
 
Fecha de Ingreso: septiembre-2006
Mensajes: 81
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Generar archivo descargable en formato .zip

pues creo que iria asi:

Código PHP:
foreach( $_POST['imagenes'] as $imagen ) {
       
$zipfile->add_file(implode("",file("$imagen.gif")), "img/01.gif");

saludos y espero que te sirva
  #20 (permalink)  
Antiguo 02/07/2008, 07:39
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Generar archivo descargable en formato .zip

Gracias elliotmoso. Es lo que me dio el genio de Gatorv, pero el problema es que solo descarga la foto del ultimo valor del array.

>Por ejemplo, quiero descargar: "verde, azul".

Solo me descarga "azul".

>Quiero descargar "rojo", lo hace bien.

>Quiero descargar "rojo, azul, verde", solo descarga "verde".

Resumo, el último valor seleccionado en el form.

Creo que el problema podría ser esto:



foreach( $_POST['imagenes'] as $imagen ) {
$zipfile->add_file(implode("",file("$imagen.gif")), "Risa y diversión/01.gif");

Veis que se introduce en la carpeta, pero con el mismo nombre, entonces windows, lo reemplaza.

¿Podría ser el problema?

Lo probaré así:

"Risa y diversión/$imagen.gif");
  #21 (permalink)  
Antiguo 02/07/2008, 07:44
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
De acuerdo Gracias!!!!

....

Bueno, después de todo.... Funciona!!!!.

Agradecimientos y aplausos a :

elliotmoso

GatorV

pateketrueke


De veras, muuuuchas gracias :--)

No puedo daros más aplausos.

Pero,, GRACIAS
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.