En Liberty, cada objeto DataHandler se puede escribir una sola
vez en una corriente de datos de salida.
La escritura repetida de un objeto DataHandler en un objeto OutputStream
produce un archivo vacío.
Después de llamar al método
javax.activation.DataHandler.writeTo(OutputStream), no puede
pasar el objeto DataHandler a otro método, devolverlo ni almacenarlo para un uso
posterior.
Como solución, puede crear un nuevo objeto DataHandler e inicializarlo
con el contenido que ya se ha recuperado del objeto DataHandler
existente mediante el método writeTo. Por ejemplo:
|
File f = new File("received_image"); if (f.exists()) { f.delete(); } FileOutputStream fos = new FileOutputStream(f); // Escribir el objeto DataHandler en la corriente de datos de salida. img_in.writeTo(fos); // Crear un nuevo objeto DataHandler e inicializarlo con el // contenido que se ha recuperado mediante el método writeTo anterior. FileDataSource fos_out = new FileDataSource(f); DataHandler img_out = new DataHandler(fos_out); return img_out; |