def __call__(self, fileobj):
detected_type = magic.from_buffer(fileobj.read(READ_SIZE), mime=True)
root, extension = os.path.splitext(fileobj.name.lower())
# seek back to start so a valid file could be read
# later without resetting the position
fileobj.seek(0)
# some versions of libmagic do not report proper mimes for Office subtypes
# use detection details to transform it to proper mime
if detected_type in ('application/octet-stream', 'application/vnd.ms-office'):
detected_type = self.check_word_or_excel(fileobj, detected_type, extension)
if detected_type not in self.allowed_mimes:
# use more readable file type names for feedback message
allowed_types = map(lambda mime_type: mime_type.split('/')[1], self.allowed_mimes)
raise ValidationError(
message=self.type_message,
params={
'detected_type': detected_type,
'allowed_types': ', '.join(allowed_types)
},
code='invalid_type'
)
if self.allowed_exts and (extension not in self.allowed_exts):
raise ValidationError(
message=self.extension_message,
params={
'extension': extension,
'allowed_extensions': ', '.join(self.allowed_exts)
},
code='invalid_extension'
)
__init__.py 文件源码
python
阅读 17
收藏 0
点赞 0
评论 0
评论列表
文章目录