我有一个自定义内容类型,使用灵巧构建。在架构中(下面列出了架构),我使用' 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>
答案 0 :(得分:3)
我决定使用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);
});
这是解决方案的一半,接下来我需要在服务器端添加验证。