In read_multi, allow a subclass to override the class we instantiate
when we create a recursive instance, by setting the class variable
'FieldStorageClass' to the desired class.  By default, this is set to
None, in which case we use self.__class__ (as before).
diff --git a/Lib/cgi.py b/Lib/cgi.py
index aaaded5..108310e 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -919,16 +919,19 @@
                 self.list.append(MiniFieldStorage(key, value))
         self.skip_lines()
 
+    FieldStorageClass = None
+
     def read_multi(self, environ, keep_blank_values, strict_parsing):
         """Internal: read a part that is itself multipart."""
         self.list = []
-        part = self.__class__(self.fp, {}, self.innerboundary,
-                              environ, keep_blank_values, strict_parsing)
+        klass = self.FieldStorageClass or self.__class__
+        part = klass(self.fp, {}, self.innerboundary,
+                     environ, keep_blank_values, strict_parsing)
         # Throw first part away
         while not part.done:
             headers = rfc822.Message(self.fp)
-            part = self.__class__(self.fp, headers, self.innerboundary,
-                                  environ, keep_blank_values, strict_parsing)
+            part = klass(self.fp, headers, self.innerboundary,
+                         environ, keep_blank_values, strict_parsing)
             self.list.append(part)
         self.skip_lines()