Na serwerze Liberty każdy obiekt DataHandler może zostać zapisany do strumienia wyjściowego tylko raz.
Zapisanie obiektu DataHandler w obiekcie
OutputStream więcej niż raz powoduje zapisanie pustego pliku.
Po wywołaniu metody
javax.activation.DataHandler.writeTo(OutputStream) nie można przekazać
obiektu DataHandler do innej metody, zwrócić go ani zapisać w celu późniejszego użycia.
Aby obejść ten problem, można utworzyć nowy obiekt DataHandler i zainicjować go z użyciem treści,
która została już pobrana z istniejącego obiektu DataHandler za pomocą metody writeTo. Na przykład:
|
File f = new File("received_image"); if (f.exists()) { f.delete(); } FileOutputStream fos = new FileOutputStream(f); // Zapisywanie obiektu DataHandler do strumienia wyjściowego. img_in.writeTo(fos); // Tworzenie nowego obiektu DataHandler i inicjowanie go z użyciem // treści pobranej za pomocą powyższej metody writeTo. FileDataSource fos_out = new FileDataSource(f); DataHandler img_out = new DataHandler(fos_out); return img_out; |