【问题标题】:Django unit testing - is it possible to specify a mime-type for file upload?Django 单元测试 - 是否可以为文件上传指定 MIME 类型?
【发布时间】:2019-06-19 08:49:35
【问题描述】:

我有一个允许上传媒体文件的 Django (1.11) 站点。我对 mime 类型进行了一些基本检查(例如,只接受“video/m4v”文件)。

当我在浏览器(通过 Web UI)上使用该网站时,此检查工作正常 - 通过 python manage.py runserver 运行。

我现在正在编写一些单元测试,但我发现无论我发布什么文件类型,它总是被选为应用程序/八位字节流 mime 类型。

我的单元测试代码如下:

media_file = open('sample_video.m4v','rb') 
self.client.login(username='admin', password='password')
response = self.client.post(reverse('oppia_av_upload'), {'media_file': media_file })
self.assertEqual(response.status_code, 200)

在 self.client.post 命令中,有没有办法可以指定 mime 类型以便正确提取它?

关于信息,我知道 mime 类型可能会被“摆弄”,因此不能保证文件是它声称的类型。

非常感谢任何帮助。

编辑: 只是为了在表单验证中包含文件上传检查代码,以防我在这里做错了什么:

def clean(self):
        cleaned_data = super(UploadMediaForm, self).clean()
        media_file = cleaned_data.get("media_file")
        print(media_file.content_type)
        if media_file is not None and media_file.content_type not in settings.OPPIA_MEDIA_FILE_TYPES:
            raise forms.ValidationError(_(u"You may only upload a media file which is one of the following types: %s" % ', '.join(settings.OPPIA_MEDIA_FILE_TYPES)))

【问题讨论】:

  • 您是否尝试过使用SimpleUploadedFile,如本答案所述? stackoverflow.com/a/27345260/2091925
  • @WillKeeling,不,我没有看到,但现在您已经指出,SimpleUploadedFile 正是我所需要的。如果您可以发表您的评论作为答案,我可以将其标记为已接受。谢谢
  • 已添加答案 - 谢谢!

标签: django unit-testing mime-types


【解决方案1】:

您也许可以使用 Django 的SimpleUploadedFile。这允许您将内容类型附加到文件中。例如:

from django.core.files.uploadedfile import SimpleUploadedFile

filename = 'sample_video.m4v'
with open(filename,'rb') as f:
    media_file =  SimpleUploadedFile(filename, f, content_type="video/m4v")
    self.client.login(username='admin', password='password')
    response = self.client.post(reverse('oppia_av_upload'), {'media_file': media_file })
    self.assertEqual(response.status_code, 200)

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2015-11-25
    • 2013-02-15
    • 2010-11-07
    • 2020-07-12
    • 2014-02-20
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多