首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据上传文件的内容验证上传文件

根据上传文件的内容验证上传文件
EN

Stack Overflow用户
提问于 2019-03-08 15:42:14
回答 1查看 57关注 0票数 0

我正在尝试验证上传的文件。首先,我试着检查一下扩展。但如果带有以下扩展名的恶意文件也将通过检查。

代码语言:javascript
复制
def validate_file_extension(value):
    ext = os.path.splitext(value.name)[1]
    valid_extensions = ['.pdf', '.doc', '.docx', '.jpg', '.png', '.xlsx', '.xls', 'ppt']
    if not ext.lower() in valid_extensions:
        raise ValidationError(u'Unsupported file extension.')

然后我尝试使用python魔术,这将在文件中查找并决定实际的类型。

代码语言:javascript
复制
def validate_file_type(value):
    file_type = magic.from_buffer(value.read(1024), mime=True)

    valid_file_types = ['image/png',
                        'image/jpg','text/plain',
                        'application/pdf',
                        'application/ms-excel',]
    if not file_type.lower() in valid_file_types:
        raise ValidationError(u'Unsupported file.')

但Excel、Word和ppt文件被识别为“application/zip”。所以不能对MS文档使用这种方法。有没有更好的方法来验证上传的文件?

EN

回答 1

Stack Overflow用户

发布于 2019-03-08 16:28:52

在这里找到了一个解决方案。https://pypi.org/project/django-constrainedfilefield/

只需使用ConstrainedFileField而不是FileField。这验证了文件扩展名是否已更改。

代码语言:javascript
复制
attach_file = ConstrainedFileField(
                                    null=True,
                                    blank=True,
                                    upload_to='directory_path',
                                    content_types=contents,
                                    max_upload_size=1024000
                                            )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55058752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档