DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21269>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21269

FileUploadBase does not handle quoted boundary specification, which is required by RFC 
1521





------- Additional Comments From [EMAIL PROTECTED]  2003-11-05 22:04 -------
We are using a User-Agent that sends request like:

--8<---------- begin ---
POST /UploadTest/upload.do HTTP/1.0
Host: w2kp-jv:8888
User-Agent: IP*Works! V5 HTTP/S Component - by /n software - www.nsoftware.com
Content-Type: multipart/form-data; boundary="boundaryoazJlhY="
Content-Length: 230

--boundaryoazJlhY=
Content-Disposition: form-data; name="file"; filename="C:\myUploadTest.txt"
Content-Type: text/plain

a first line
a second line
--boundaryoazJlhY=--

--8<----------  end  ---

Note the quotes on the value for the boundary in the Content-Type field.

I have made these code changes, they work for us:

--8<---------- begin ---
Index: FileUploadBase.java
===================================================================
RCS file: /home/cvspublic/jakarta-
commons/fileupload/src/java/org/apache/commons/fileupload/FileUploadBase.java,v
retrieving revision 1.4
diff -u -r1.4 FileUploadBase.java
--- FileUploadBase.java 9 Oct 2003 21:15:47 -0000       1.4
+++ FileUploadBase.java 5 Nov 2003 22:02:38 -0000
@@ -328,8 +328,17 @@
                         "the request was rejected because "
                         + "no multipart boundary was found");
             }
-            byte[] boundary = contentType.substring(
-                    boundaryIndex + 9).getBytes();
+            String boundaryBase = contentType.substring(boundaryIndex + 9);
+            byte[] boundary = null;
+            if (boundaryBase.startsWith("\"") && boundaryBase.endsWith("\""))
+            {
+                // removing quotes
+                boundary = boundaryBase.substring(1, (boundaryBase.length() - 
1)).getBytes();
+            }
+            else
+            {
+                boundary = boundaryBase.getBytes();
+            }
 
             InputStream input = req.getInputStream();
--8<----------  end  ---

I'm not an expert on the related RFCs, but check the "WARNING TO IMPLEMENTORS" 
on page 30 of http://www.ietf.org/rfc/rfc1521.txt

I hope this makes sense.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to