396 elif content_type in ('application/x-www-form-urlencoded', |
396 elif content_type in ('application/x-www-form-urlencoded', |
397 'application/x-url-encoded'): |
397 'application/x-url-encoded'): |
398 mem_limit = kw.get('mem_limit', 2**20) |
398 mem_limit = kw.get('mem_limit', 2**20) |
399 if content_length > mem_limit: |
399 if content_length > mem_limit: |
400 raise MultipartError("Request to big. Increase MAXMEM.") |
400 raise MultipartError("Request to big. Increase MAXMEM.") |
401 data = stream.read(mem_limit).decode(charset) |
401 data = stream.read(mem_limit) |
402 if stream.read(1): # These is more that does not fit mem_limit |
402 if stream.read(1): # These is more that does not fit mem_limit |
403 raise MultipartError("Request to big. Increase MAXMEM.") |
403 raise MultipartError("Request to big. Increase MAXMEM.") |
404 data = parse_qs(data, keep_blank_values=True) |
404 data = parse_qs(data, keep_blank_values=True) |
405 for key, values in data.iteritems(): |
405 for key, values in data.iteritems(): |
406 for value in values: |
406 for value in values: |
407 forms[key] = value |
407 forms[key] = value.decode(charset) |
408 else: |
408 else: |
409 raise MultipartError("Unsupported content type.") |
409 raise MultipartError("Unsupported content type.") |
410 except MultipartError: |
410 except MultipartError: |
411 if strict: raise |
411 if strict: raise |
412 return forms, files |
412 return forms, files |