Hello,

If there are more than 2 file input field with same name and 
in case of 1st attached file exists and 2nd is empty 
like 
   <tr>
       <td>attached file 1 </td>
       <td><input type="file" name="file" size="30"></td>
   </tr>
   <tr>
       <td>attached file 2 </td>
       <td><input type="file" name="file" size="30"></td>
   </tr>

Then 
FileItem[] f_item = data.getParameters().getFileItems("file");
throws following Exception

java.lang.ClassCastException: java.lang.Object
 at 
org.apache.turbine.util.parser.BaseValueParser.getStrings(BaseValueParser.java:947)
 at org.apache.turbine.util.parser.BaseValueParser.append(BaseValueParser.java:296)
 at 
org.apache.turbine.services.upload.TurbineUploadService.parseRequest(TurbineUploadService.java:217)


Because the attached file name is null , The 2nd treatment will go through form field 
treatment.
But ParameterParser has occupied by name "file" already with a FileItem of the 1st 
attached file not a String 

Thanks,

youngho


Index: TurbineUploadService.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-turbine-2/src/java/org/apache/turbine/services/upload/TurbineUploadService.java,v

retrieving revision 1.1.1.1
diff -u -r1.1.1.1 TurbineUploadService.java
--- TurbineUploadService.java 2001/08/16 05:09:24 1.1.1.1
+++ TurbineUploadService.java 2001/11/17 06:19:10
@@ -184,36 +184,29 @@
                     }
                     else
                     {
+                      FileItem item = createItem(path, headers,
+                                                     requestSize);
+                        OutputStream os = item.getOutputStream();
+                        try
+                        {
+                            multi.readBodyData(os);
+                        }
+                        finally
+                        {
+                            os.close();
+                        }
+
                         if (getFileName(headers) != null)
                         {
                             // A single file.
-                            FileItem item = createItem(path, headers,
-                                                       requestSize);
-                            OutputStream os = item.getOutputStream();
-                            try
-                            {
-                                multi.readBodyData(os);
-                            }
-                            finally
-                            {
-                                os.close();
-                            }
-                            params.append(getFieldName(headers), item);
+                            if( item.getSize() > 0 )
+                            {
+                                params.append(getFieldName(headers), item);
+                            }
                         }
                         else
                         {
                             // A form field.
-                            FileItem item = createItem(path, headers,
-                                                       requestSize);
-                            OutputStream os = item.getOutputStream();
-                            try
-                            {
-                                multi.readBodyData(os);
-                            }
-                            finally
-                            {
-                                os.close();
-                            }
                             params.append(getFieldName(headers),
                                           new String(item.get()));
                         }
@@ -248,13 +241,19 @@
         {
             int start = cd.indexOf("filename=\"");
             int end = cd.indexOf('"', start + 10);
-            if(start != -1 && end != -1 && (start + 10) != end)
+            if(start != -1 && end != -1 )
             {
                 String str = cd.substring(start + 10, end).trim();
                 if (str.length() > 0)
                 {
                     fileName = str;
                 }
+                else
+                {
+                   // need some name even if there is no attached file
+                   // in order to go through a file add routine
+                  fileName = "empty";
+    }
             }
         }
         return fileName;




Reply via email to