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!!
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!!
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
//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, ?);