if isinstance(value, io.IOBase):
self._is_multipart = True elif isinstance(value, (bytes, bytearray, memoryview)):
msg = ( "In v4, passing bytes will no longer create a file field. " "Please explicitly use the filename parameter or pass a BytesIO object."
) if filename isNoneand content_transfer_encoding isNone:
warnings.warn(msg, DeprecationWarning)
filename = name
type_options: MultiDict[str] = MultiDict({"name": name}) if filename isnotNoneandnot isinstance(filename, str): raise TypeError( "filename must be an instance of str. ""Got: %s" % filename
) if filename isNoneand isinstance(value, io.IOBase):
filename = guess_filename(value, name) if filename isnotNone:
type_options["filename"] = filename
self._is_multipart = True
headers = {} if content_type isnotNone: ifnot isinstance(content_type, str): raise TypeError( "content_type must be an instance of str. ""Got: %s" % content_type
)
headers[hdrs.CONTENT_TYPE] = content_type
self._is_multipart = True if content_transfer_encoding isnotNone: ifnot isinstance(content_transfer_encoding, str): raise TypeError( "content_transfer_encoding must be an instance" " of str. Got: %s" % content_transfer_encoding
)
msg = ( "content_transfer_encoding is deprecated. " "To maintain compatibility with v4 please pass a BytesPayload."
)
warnings.warn(msg, DeprecationWarning)
self._is_multipart = True
else: raise TypeError( "Only io.IOBase, multidict and (name, file) " "pairs allowed, use .add_field() for passing " "more complex parameters, got {!r}".format(rec)
)
def _gen_form_urlencoded(self) -> payload.BytesPayload: # form data (x-www-form-urlencoded)
data = [] for type_options, _, value in self._fields:
data.append((type_options["name"], value))
charset = self._charset if self._charset isnotNoneelse"utf-8"
def _gen_form_data(self) -> multipart.MultipartWriter: """Encode a list of fields using the multipart/form-data MIME format""" if self._is_processed: raise RuntimeError("Form data has been processed already") for dispparams, headers, value in self._fields: try: if hdrs.CONTENT_TYPE in headers:
part = payload.get_payload(
value,
content_type=headers[hdrs.CONTENT_TYPE],
headers=headers,
encoding=self._charset,
) else:
part = payload.get_payload(
value, headers=headers, encoding=self._charset
) except Exception as exc: raise TypeError( "Can not serialize value type: %r\n " "headers: %r\n value: %r" % (type(value), headers, value)
) from exc
if dispparams:
part.set_content_disposition( "form-data", quote_fields=self._quote_fields, **dispparams
) # FIXME cgi.FieldStorage doesn't likes body parts with # Content-Length which were sent via chunked transfer encoding assert part.headers isnotNone
part.headers.popall(hdrs.CONTENT_LENGTH, None)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.