def deserialize(self, node, value): if is_file_type(value): return { 'file': value, 'filename': basename(value.name), 'type': None} elif isinstance(value, FieldStorage): return { 'file': value.file, 'filename': value.filename, 'type': 'image/png'} else: raise Invalid(node, _('Invalid file.'))
def find_mimetype(filename=None, header_or_file=None): if is_file_type(header_or_file): header_or_file.seek(0) header = header_or_file.read(guess_mimetype_with_data.min_header_size) else: header = maybe_bytes(header_or_file) mimetype = None if header is not None: mimetype = guess_mimetype_with_data(header) if not mimetype: filename = maybe_string(filename) if filename: mimetype, encoding = mimetypes.guess_type(filename, strict=True) if not mimetype: mimetype, encoding = mimetypes.guess_type(filename, strict=False) return maybe_string(mimetype)