From 735e61778a9d0557f848b770a3e8504e601e0545 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 26 Feb 2009 17:05:32 +0000 Subject: [PATCH] [ 2642430 ] Upload give intermitten IllegalStateException --- .../webui/editor/WFilenameEditor.java | 8 ++--- .../adempiere/webui/panel/WAttachment.java | 32 +++++++++++++++++-- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java index f88740c99e..1c4ffba88c 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java @@ -25,7 +25,6 @@ import org.adempiere.webui.component.FilenameBox; import org.adempiere.webui.event.ValueChangeEvent; import org.compiere.model.GridField; import org.compiere.util.CLogger; -import org.compiere.util.Env; import org.zkoss.util.media.Media; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; @@ -113,7 +112,7 @@ public class WFilenameEditor extends WEditor try { - file = Fileupload.get(); + file = Fileupload.get(true); if (file == null) return; @@ -136,10 +135,9 @@ public class WFilenameEditor extends WEditor fos = new FileOutputStream(tempFile); byte[] bytes = null; - try { + if (file.inMemory()) { bytes = file.getByteData(); - } - catch ( IllegalStateException ise ) { + } else { InputStream is = file.getStreamData(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[ 1000 ]; diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java index fa60d275ca..3fd5d8b379 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java @@ -17,6 +17,9 @@ package org.adempiere.webui.panel; import java.awt.Dimension; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.util.logging.Level; import org.adempiere.webui.apps.AEnv; @@ -412,7 +415,7 @@ public class WAttachment extends Window implements EventListener try { - media = Fileupload.get(); + media = Fileupload.get(true); if (media != null) { @@ -437,7 +440,7 @@ public class WAttachment extends Window implements EventListener { if (m_attachment.getEntryName(i).equals(fileName)) { - m_attachment.updateEntry(i, media.getByteData()); + m_attachment.updateEntry(i, getMediaData(media)); cbContent.setSelectedIndex(i); m_change = true; return; @@ -446,7 +449,7 @@ public class WAttachment extends Window implements EventListener //new - if (m_attachment.addEntry(fileName, media.getByteData())) + if (m_attachment.addEntry(fileName, getMediaData(media))) { cbContent.appendItem(media.getName(), media.getName()); cbContent.setSelectedIndex(cbContent.getItemCount()-1); @@ -454,6 +457,29 @@ public class WAttachment extends Window implements EventListener } } // getFileName + private byte[] getMediaData(Media media) { + byte[] bytes = null; + + if (media.inMemory()) + bytes = media.getByteData(); + else { + InputStream is = media.getStreamData(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] buf = new byte[ 1000 ]; + int byteread = 0; + try { + while (( byteread=is.read(buf) )!=-1) + baos.write(buf,0,byteread); + } catch (IOException e) { + log.log(Level.SEVERE, e.getLocalizedMessage(), e); + throw new IllegalStateException(e.getLocalizedMessage()); + } + bytes = baos.toByteArray(); + } + + return bytes; + } + /** * Delete entire Attachment */