2013-01-03 46 views
4

我有一個自定義的內容類型,以純熟的建造。在架構(架構如下)中,我使用'plone.namedfile.field.NamedFile'作爲附件/上傳。通過限制文件類型或使用敏捷的MIME類型上載的Plone

我想限制上傳,以便只有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

回答

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

}); 

這是一半的解決方案,接下來我需要在添加驗證服務器端。

+0

到目前爲止,您是否找到了服務器端驗證的方法? –

+0

一個用於音頻文件的服務器端驗證例如可以在這裏找到:http://stackoverflow.com/questions/14264737/django-python-how-to-read-a-file-and-validate-that-它是一個音頻文件 –

+0

該鏈接看起來像正確的方向。一旦我得到它的工作,我會在這裏添加一個筆記作爲最終答案。 –