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 に答える