В Liberty каждый объект DataHandler может быть записан в поток вывода только один раз.
Запись объекта DataHandler в объект OutputStream больше одного раза приведет к пустому файлу.
После вызова метода javax.activation.DataHandler.writeTo(OutputStream) объект DataHandler нельзя передавать в другие методы, возвращать и сохранять для использования в будущем.
В качестве обходного решения можно создать новый объект DataHandler и инициализировать его данными, которые уже получены из первого объекта DataHandler посредством метода writeTo. Пример:
|
File f = new File("received_image"); if (f.exists()) { f.delete(); } FileOutputStream fos = new FileOutputStream(f); // Записать объект DataHandler в поток вывода. img_in.writeTo(fos); // Создать новый объект DataHandler и инициализировать его // данными, которые были получены посредством предыдущего метода writeTo. FileDataSource fos_out = new FileDataSource(f); DataHandler img_out = new DataHandler(fos_out); return img_out; |