diff options
author | Amber Brown <hawkowl@atleastfornow.net> | 2018-05-14 22:11:55 (GMT) |
---|---|---|
committer | Ned Deily <nad@python.org> | 2018-05-14 22:11:55 (GMT) |
commit | 545c955be997efd6b3827b981024e6b9945d82d1 (patch) | |
tree | 7e66dc411f94029250b67465c474dfde19695cde /Lib/cgi.py | |
parent | 3059042410dce69806b94be72d5c8055d616f3a3 (diff) | |
download | cpython-545c955be997efd6b3827b981024e6b9945d82d1.zip cpython-545c955be997efd6b3827b981024e6b9945d82d1.tar.gz cpython-545c955be997efd6b3827b981024e6b9945d82d1.tar.bz2 |
bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in FieldStorage use the given errors (GH-6804)
Diffstat (limited to 'Lib/cgi.py')
-rwxr-xr-x | Lib/cgi.py | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -198,13 +198,14 @@ def parse_qsl(qs, keep_blank_values=0, strict_parsing=0): DeprecationWarning, 2) return urllib.parse.parse_qsl(qs, keep_blank_values, strict_parsing) -def parse_multipart(fp, pdict, encoding="utf-8"): +def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"): """Parse multipart input. Arguments: fp : input file pdict: dictionary containing other parameters of content-type header - encoding: request encoding + encoding, errors: request encoding and error handler, passed to + FieldStorage Returns a dictionary just like parse_qs(): keys are the field names, each value is a list of values for that field. For non-file fields, the value @@ -217,7 +218,7 @@ def parse_multipart(fp, pdict, encoding="utf-8"): headers = Message() headers.set_type(ctype) headers['Content-Length'] = pdict['CONTENT-LENGTH'] - fs = FieldStorage(fp, headers=headers, encoding=encoding, + fs = FieldStorage(fp, headers=headers, encoding=encoding, errors=errors, environ={'REQUEST_METHOD': 'POST'}) return {k: fs.getlist(k) for k in fs} @@ -458,7 +459,8 @@ class FieldStorage: self.type = ctype self.type_options = pdict if 'boundary' in pdict: - self.innerboundary = pdict['boundary'].encode(self.encoding) + self.innerboundary = pdict['boundary'].encode(self.encoding, + self.errors) else: self.innerboundary = b"" |