【问题标题】:Restrict upload by filetype or mimetype using Dexterity on Plone使用 Dexterity on Plone 按文件类型或 mime 类型限制上传
【发布时间】:2012-12-18 04:19:12
【问题描述】:

我有一个自定义的内容类型,构建起来很灵巧。在架构中(架构在下面列出),我使用 'plone.namedfile.field.NamedFile' 进行附件/上传。

我想限制上传,以便只有 mp3 文件可以附加到我的内容类型。实现这一目标的最佳方法是什么?

这是我的内容类型的完整架构/模型:

<model xmlns="http://namespaces.plone.org/supermodel/schema">
<schema>
<field name="date" type="zope.schema.Date">
<description />
<title>Date</title>
</field>
<field name="speaker" type="zope.schema.TextLine">
<description />
<title>Speaker</title>
</field>
<field name="service" type="zope.schema.Choice">
<description />
<title>Service</title>
<values>
<element>1st Service</element>
<element>2nd Service</element>
</values>
</field>
<field name="audio_file" type="plone.namedfile.field.NamedFile">
<description />
<title>Audio File</title>
</field>
</schema>
</model>

我将从这里开始搜索:http://plone.org/products/dexterity/documentation/manual/developer-manual/reference/default-value-validator-adaptors

【问题讨论】:

    标签: plone dexterity


    【解决方案1】:

    我决定使用 javascript 进行第一行验证。 我的解决方案基于<input type="file"> limit selectable files by extensions

    上的信息

    根据建议,我的脚本如下所示:

    $(document).ready( function() {
    
    function checkFile(event) {
            var fileElement = document.getElementById("form-widgets-audio_file-input");
            var fileExtension = "";
            if (fileElement.value.lastIndexOf(".") > 0) {
                fileExtension = fileElement.value.substring(fileElement.value.lastIndexOf(".") + 1, fileElement.value.length);
            }
            if (fileExtension == "mp3") {
                return true;
            }
            else {
                alert("You must select a mp3 file for upload");
                return false;
            }
        }
    
    $("form#form").bind("submit",checkFile);
    
    });
    

    这是解决方案的一半,接下来我需要在服务器端添加验证。

    【讨论】:

    • 你现在找到服务器端验证的方法了吗?
    • 可以在此处找到服务器端验证音频文件的示例:stackoverflow.com/questions/14264737/…
    • 该链接看起来方向正确。一旦我得到它的工作,我会在这里添加一个注释作为最终答案。
    • 那太棒了,我很高兴听到这个消息 :) 支持你的任务。
    猜你喜欢
    • 2016-02-25
    • 2016-01-25
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2014-03-21
    • 2012-06-01
    相关资源
    最近更新 更多