Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Crear zip en java que funcione en php

Estas en el tema de Crear zip en java que funcione en php en el foro de Java en Foros del Web. Muy buenas tardes comunidad hoy vengo con una duda, creo un zip con java y lo subo mediante php a un servidor y extraigo los ...
  #1 (permalink)  
Antiguo 22/05/2013, 14:16
 
Fecha de Ingreso: abril-2010
Ubicación: Cancun
Mensajes: 88
Antigüedad: 14 años
Puntos: 2
Pregunta Crear zip en java que funcione en php

Muy buenas tardes comunidad hoy vengo con una duda, creo un zip con java y lo subo mediante php a un servidor y extraigo los archivos, a la hora de crearlos hace lo siguiente

carpeta/imagen_1.jpg
carpeta/imagen_2.jpg
carpeta/imagen_3.jpg
carpeta/imagen_4.jpg
carpeta/imagen_5.jpg

y mis thumb en lugar de crear una carpeta hace lo siguiente


carpeta/thumb\imagen_1.jpg
carpeta/thumb\imagen_2.jpg
carpeta/thumb\imagen_3.jpg
carpeta/thumb\imagen_4.jpg
carpeta/thumb\imagen_5.jpg

cabe destacar que thumb/imagen_5.jpg es el nombre de mi imagen

Digo que mi problema es en Java por que al subir un zip creado desde winzip o winrar funcionan correctamente


subo mi codigo generador del zip

Código:
public static void addFolderToZip(File folder, ZipOutputStream zip, String baseName) throws IOException {
		File[] files = folder.listFiles();
		byte[] buffer = new byte[1024];
		for (File file : files) {
			if (file.isDirectory()) {
				addFolderToZip(file, zip, baseName);
			} else {
				 FileInputStream fin = new FileInputStream(file);
				 String name = file.getAbsolutePath().substring(baseName.length()+1);
				 ZipEntry zipEntry = new ZipEntry(name);
				 zip.putNextEntry(zipEntry);
				 int length;
                 while((length = fin.read(buffer)) > 0)
                 {
                    zip.write(buffer, 0, length);
                 }
                 zip.closeEntry();
                 fin.close();
			}
		}
		zip.close();
	}
y este es mi codigo php que uso para estraer, si funciona con otros zip menos con el generado con java

Código PHP:
if($zip->extract(PCLZIP_OPT_PATH$destdir."/2222",PCLZIP_OPT_REMOVE_PATH'temp_install') != 0){
//Mis procesos y entra por que no marca error


Saludos ayudenme


Nota:

Servidor donde lo subo es en Linux lo creo en Windows
  #2 (permalink)  
Antiguo 23/05/2013, 01:40
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Crear zip en java que funcione en php

Un zip es un zip, se haya creado en windows o linux.

Revisa el nombre que le estás dando al comprimir los ficheros, ten en cuenta que tienes que añadir el separador que corresponde y que para añadir un directorio este tiene que acabar en con el separador.

http://stackoverflow.com/questions/1...tory-structure
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 23/05/2013, 09:38
 
Fecha de Ingreso: abril-2010
Ubicación: Cancun
Mensajes: 88
Antigüedad: 14 años
Puntos: 2
Pregunta Respuesta: Crear zip en java que funcione en php

Cita:
Iniciado por Xerelo Ver Mensaje
Un zip es un zip, se haya creado en windows o linux.

Revisa el nombre que le estás dando al comprimir los ficheros, ten en cuenta que tienes que añadir el separador que corresponde y que para añadir un directorio este tiene que acabar en con el separador.

http://stackoverflow.com/questions/1...tory-structure
Pues eso intento hacer, ahora leere lo que me haz mandado parece una solucion diferente a todas las que he encontrado si funciona pongo la solucion
  #4 (permalink)  
Antiguo 23/05/2013, 11:08
 
Fecha de Ingreso: abril-2010
Ubicación: Cancun
Mensajes: 88
Antigüedad: 14 años
Puntos: 2
Respuesta: Crear zip en java que funcione en php

Código:
public void CrearZIP (){
		try {
			//name of zip file to create
			String outFilename = "D:\destino\miarchivo.zip";
			
			//create ZipOutputStream object
			ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
			
			//path to the folder to be zipped
			File zipFolder = new File("D:\destino\imagenes/");

			addFolderToZip(zipFolder, out);
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void addFolderToZip(File folder, ZipOutputStream zip) throws IOException {
		URI base = folder.toURI();
		Deque<File> queue = new LinkedList<File>();
	    queue.push(folder);
	    Closeable res = zip;
	    try{
	    	while (!queue.isEmpty()) {
	    		folder = queue.pop();
	            for (File kid : folder.listFiles()) {
	            	String name = base.relativize(kid.toURI()).getPath();
	            	if (kid.isDirectory()) {
	                    queue.push(kid);
	                    name = name.endsWith("/") ? name : name + "/";
	                    //JOptionPane.showMessageDialog(null,name);
	                    zip.putNextEntry(new ZipEntry(name));
	                  } else {
	                	zip.putNextEntry(new ZipEntry(name));
	                	//JOptionPane.showMessageDialog(null,name);
	                    copy(kid, zip);
	                    zip.closeEntry();
	                  }
	            }
	    	}
	    }
	    finally{
	    	res.close();
	    }
	}
	private static void copy(InputStream in, OutputStream out) throws IOException {
	    byte[] buffer = new byte[1024];
	    while (true) {
	      int readCount = in.read(buffer);
	      if (readCount < 0) {
	        break;
	      }
	      out.write(buffer, 0, readCount);
	    }
	  }

	  private static void copy(File file, OutputStream out) throws IOException {
	    InputStream in = new FileInputStream(file);
	    try {
	      copy(in, out);
	    } finally {
	      in.close();
	    }
	  }

	  private static void copy(InputStream in, File file) throws IOException {
	    OutputStream out = new FileOutputStream(file);
	    try {
	      copy(in, out);
	    } finally {
	      out.close();
	    }
	  }

Etiquetas: linux, php, windows, zip
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:30.