Index: FilePart.java =================================================================== RCS file: /home/cvspublic/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java,v retrieving revision 1.2 diff -u -r1.2 FilePart.java --- FilePart.java 11 Oct 2002 05:16:32 -0000 1.2 +++ FilePart.java 16 Oct 2002 06:15:28 -0000 @@ -64,6 +64,7 @@ import java.io.File; import java.io.FileInputStream; +import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.FileNotFoundException; @@ -97,6 +98,8 @@ private String name; private int buff_size; + + private byte[] dataBuf = null; /** * Constructor. @@ -190,11 +193,18 @@ buff = new byte[(new Long(lengthOfData())).intValue()]; } - int len; - - while ((len = fileStream.read(buff)) != -1) - { - out.write(buff, 0, len); + // Make sure that when we send we buffer the data so we can send + // it again if required. + if (dataBuf != null) { + out.write(dataBuf, 0, dataBuf.length); + } else { + int len; + ByteArrayOutputStream bufferStream = new ByteArrayOutputStream(); + while ((len = fileStream.read(buff)) != -1) { + out.write(buff, 0, len); + bufferStream.write(buff, 0, len); + } + dataBuf = bufferStream.toByteArray(); } }