【问题标题】:Check mime type of uploaded file in Django在 Django 中检查上传文件的 mime 类型
【发布时间】:2014-02-20 05:14:38
【问题描述】:

我有一个允许用户上传图片的网站。要检查用户上传的文件的 MIME 类型,我正在使用以下脚本,该脚本使用 python-magic

import magic
mime = magic.Magic(mime=True)
if mime.from_file(request.FILES['media-pic']) not in ['image/jpeg', 'image/pjpeg', 'image/png', 'image/gif']:
  # don't allow the file to be uploaded

但是,当我尝试上传文件时,我收到错误 coercing to Unicode: need string or buffer, TemporaryUploadedFile found。我不认为它会起作用,但我尝试了request.FILES['media-pic'].name 并得到了File does not exist 错误。

如何在文件保存到服务器之前检查文件的 MIME 类型?

【问题讨论】:

    标签: django file-upload


    【解决方案1】:

    mime.from_file 需要一个文件名,根据文件大小,上传的文件可能只存在于内存中。您可以改用 mime.from_buffer 方法,使用类似这样的方法:

    f = request.FILES['media-pic']
    # maybe even only read the first X bytes, might be enough for mimetype detection
    mimetype = mime.from_buffer(f.read())
    

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 2018-11-07
      • 2011-08-06
      • 1970-01-01
      • 2021-08-09
      • 2011-02-13
      相关资源
      最近更新 更多