0

アップロードする前にPythonマジックを使用してファイルを検証しているため、以下のリンクをたどっています。

https://djangosnippets.org/snippets/3039/

validators.py ファイル:

from django.core.exceptions import ValidationError
import magic


class MimetypeValidator(object):
    def __init__(self, mimetypes):
        self.mimetypes = mimetypes

    def __call__(self, value):
        try:
            mime_byt = magic.from_buffer(value.read(1024), mime=True)
            mime = mime_byt.decode(encoding='UTF-8')
            if mime not in self.mimetypes:
                raise ValidationError('%s is not an acceptable file type' % value)
        except AttributeError as e:
            raise ValidationError('This value could not be validated for file type' % value)

ここに私のform.pyファイルがあります:

class FileForm(forms.ModelForm):
    file = forms.FileField(
        label='Select a File *',
        allow_empty_file=False,
        validators=[MimetypeValidator('application/pdf')],
        help_text='Max. Size - 25 MB')

    class Meta:
        model = File
        fields = ('file')

SO この python マジック ロジックを使用して pdf ファイルをアップロードできますが、画像 tiff ファイルのアップロードを許可し、ファイル サイズを 25 MB に制限したいと考えています。

Pythonマジックを使用してこれを実装するにはどうすればよいですか?

4

1 に答える 1

2

これを行うのにライブラリは必要ありません。アップロードされたファイルのサイズは、フォームの clean メソッドで確認できます。

def clean_file(self):
    file = self.cleaned_data['file']
    if file.size > 25000000:
        raise ValidationError('The file is too big')
    return file
于 2016-05-26T07:38:13.767 に答える