Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    76

    Creare Zip senza salvare su file system del Server [Java 2EE]

    Ho la necessita’ di creare un file zip con file prelevati dal Database (attraverso oggetti CLob)… e in questo modo riesco a creare lo zip:

    codice:
    byte[] buffer = new byte[18024];
    ZipOutputStream out = new ZipOutputStream( new BufferedOutputStream(new FileOutputStream(nomeFileZip+".zip")));
    // Set the compression ratio
    out.setLevel(Deflater.DEFAULT_COMPRESSION);
    for (int i = 0; i < comunicazione.size(); i++) {
    	InputStream file =(InputStream) comunicazione.get(i); 
    	// Associate a file input stream for the current file
    	ZipEntry zip = new ZipEntry(nomeFileZip+"_"+i+".html");
    	// Add ZIP entry to output stream.
    	out.putNextEntry(zip);
    	// Transfer bytes from the current file to the ZIP file
    	int len;
    	while ((len = file.read(buffer)) > 0) {
    		out.write( buffer, 0, len);
    	}
    	// Close the current entry
    	out.closeEntry();
    }
    // Close the ZipOutPutStream
    out.close();
    il problema e’ che essendo un’applicazione Web, non posso scrivere il file (.zip) su File System !!! Il file zip lo devo salvare sul Database!
    Consigli???

    Grazie

    Francesco

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Creare Zip senza salvare su file system del Server [Java 2EE]

    Originariamente inviato da krisc1
    il problema e’ che essendo un’applicazione Web, non posso scrivere il file (.zip) su File System !!! Il file zip lo devo salvare sul Database!
    Potresti creare un Blob, da cui puoi ottenere un OutputStream e scrivere su quello invece di un FileOutputStream.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    76
    Originariamente inviato da andbin
    Potresti creare un Blob, da cui puoi ottenere un OutputStream e scrivere su quello invece di un FileOutputStream.
    Penso che sia proprio un'ottima idea.... ci sto provando a sistemarlo.... ma... ho un problemino! Io setto il blob così:

    codice:
    // il vero codice non e' questo.... queste sono solo le query!!!
    INSERT INTO miaTab (id, nome_file, file) VALUES (1,"nome",oracle.sql.BLOB.getEmptyBLOB())
    // Recupero il record appena inserito nella tabella :
    ResultSet rs = "SELECT file FROM miaTab where ID = 1";
    
    // Creo il file zip utilizzando new ZipOutputStream(new BufferedOutputStream(new ByteArrayOutputStream() ));
    ZipOutputStream zipFile= creaZip()
    
    //  Inserisco il nuovo valore per il campo blob:
    Blob zipBlob =(Blob) rs.getBlob(1);
    OutputStream outS = zipBlob.setBinaryStream(0);              
    BufferedOutputStream boutS = new BufferedOutputStream(outS);
    
    byte [] blob = zipFile; // DA ERRORE... perche' non e' un byte[]
    
    boutS.write(blob);
    boutS.flush();
    boutS.close();
    E come commentato nel codice... non riesco a trasformare lo ZipOutputStream in byte []

    La soluzione sembra vicina.... ma ancora non abbastanza!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.