zipowanie xls

0

WITAM!!! MAM NASTEPUJACY PROBLEM.

CHCE ZZIPOWAC PLIK XLS W TEN SPOSOB ZEBY NIE GENEROWAC NOWEGO PLIKU NA DYSK,
TYLKO BEZPOSREDNIO ZZIPOWANY STRUMIEN WSTAWIC DO BAZY DANYCH JAKO BLOB(SETBINARYSTREAM).
CZY TO w ogóle JEST MOZLIWE?

Z GORY DZIEKI!!

0

po pierwsze prosze - nie uzywaj capsa
tak, jest to mozliwe.
poniewaz strumienie to dekoratory - mozesz podlaczyc FileInputStream (lub InputStream w przypadku innego zrodla) do PipedInput/OutputSream a nastepnie opakowac go ZipOutputStream i wrzucic do ByteArrayOutputStream a nastepnie do bazy zwyklym insertem

pozdrawiam

0

//Robilam to wczesniej tak
FileInputStream in = new FileInputStream(plikTmp);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(nazwa+ ".zip"));
out.putNextEntry(new ZipEntry(plikTmp.getName()));

	// transfer z pliku do zipa
	byte[] buf = new byte[1024];
	int len;
	while ((len = in.read(buf)) > 0) {
		out.write(buf, 0, len);
	}

	// zamknij zipa
	out.closeEntry();
	out.close();

	// zamknij plik wejsciowy
	in.close();
	
File file = new File(nazwa + ".zip");
	FileInputStream zip = new FileInputStream(file);

	ps.setBinaryStream(6, zip ,(int)file.length());
	// 
	// a teraz tak , tylko nie wiem skąd wziać rozmiar tego os1

FileInputStream in = new FileInputStream(plikTmp);
	ByteArrayOutputStream os = new ByteArrayOutputStream();


	ZipOutputStream out = new ZipOutputStream(os);
	out.putNextEntry(new ZipEntry(plikTmp.getName()));

	// transfer z pliku do zipa
	byte[] buf = new byte[1024];
	int len;
	while ((len = in.read(buf)) > 0) {
		out.write(buf, 0, len);
	}
	

ByteArrayInputStream os1 = new ByteArrayInputStream(os.toByteArray());
ps.setBinaryStream(6, os1, ?);

1 użytkowników online, w tym zalogowanych: 0, gości: 1