4

我有一个自定义的内容类型,用灵巧构建。在架构中(架构在下面列出),我使用“ 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

4

1 回答 1

3

我决定使用 javascript 进行第一行验证。我的解决方案基于在<input type="file"> 通过扩展名限制可选文件中找到的信息

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

$(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);

});

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

于 2013-01-03T19:15:31.827 回答