1.1 --- a/WebStack/Helpers/Request.py Thu Aug 25 22:47:52 2005 +0000
1.2 +++ b/WebStack/Helpers/Request.py Fri Aug 26 01:27:37 2005 +0000
1.3 @@ -127,12 +127,31 @@
1.4 if type(field_values) == type([]):
1.5 fields[field_name] = []
1.6 for field_value in field_values:
1.7 - fields[field_name].append(get_body_field(field_value.value, encoding))
1.8 + fields[field_name].append(get_body_field_or_file(field_value, encoding))
1.9 else:
1.10 - fields[field_name] = [get_body_field(field_values.value, encoding)]
1.11 + fields[field_name] = [get_body_field_or_file(field_values, encoding)]
1.12
1.13 return fields
1.14
1.15 +def get_body_field_or_file(field_value, encoding):
1.16 +
1.17 + """
1.18 + Returns the appropriate value for the given 'field_value' either for a
1.19 + normal form field (thus employing the given 'encoding') or for a file
1.20 + upload field (returning a plain string).
1.21 + """
1.22 +
1.23 + if hasattr(field_value, "headers") and field_value.headers.has_key("content-type"):
1.24 +
1.25 + # Detect stray FileUpload objects (eg. with Zope).
1.26 +
1.27 + if hasattr(field_value, "read"):
1.28 + return field_value.read()
1.29 + else:
1.30 + return field_value.value
1.31 + else:
1.32 + return get_body_field(field_value, encoding)
1.33 +
1.34 def get_body_field(field_str, encoding):
1.35
1.36 """
1.37 @@ -140,13 +159,10 @@
1.38 given 'encoding'.
1.39 """
1.40
1.41 - # Detect stray FieldStorage objects (eg. with Webware) or stray FileUpload
1.42 - # objects (eg. with Zope).
1.43 + # Detect stray FieldStorage objects (eg. with Webware).
1.44
1.45 if hasattr(field_str, "value"):
1.46 return get_body_field(field_str.value, encoding)
1.47 - elif hasattr(field_str, "read"):
1.48 - return field_str.read()
1.49 else:
1.50 return decode_value(field_str, encoding)
1.51