How does one use magic to verify file type in a Django form clean method?

后端 未结 5 647
陌清茗
陌清茗 2021-01-13 14:00

I have written an email form class in Django with a FileField. I want to check the uploaded file for its type via checking its mimetype. Subsequently, I want to limit file t

5条回答
  •  借酒劲吻你
    2021-01-13 14:25

    mime = magic.Magic(mime=True)
    
    attachment = form.cleaned_data['attachment']
    
    if hasattr(attachment, 'temporary_file_path'):
        # file is temporary on the disk, so we can get full path of it.
        mime_type = mime.from_file(attachment.temporary_file_path())
    else:
        # file is on the memory
        mime_type = mime.from_buffer(attachment.read())
    

    Also, you might want to seek(0) after read():

    if hasattr(f, 'seek') and callable(f.seek):
        f.seek(0)
    

    Example from Django code. Performed for image fields during validation.

提交回复
热议问题