2012-04-17 9 views
1

私はdjangoフォームでhtml5を使うには?

// fileInput is a HTMLInputElement: <input type="file" multiple id="myfileinput"> 
var fileInput = document.getElementById("myfileinput"); 
// files is a FileList object (simliar to NodeList) 
var files = fileInput.files; 
for (var i = 0; i < files.length; i++) 
{ 
    alert(files[i].name + " has a size of " + files[i].size + " Bytes"); 
} 

このスニペットでこのスニペット

# extra.py in yourproject/app/ 

from django.db.models import FileField 
from django.forms import forms 
from django.template.defaultfilters import filesizeformat 
from django.utils.translation import ugettext_lazy as _ 

class ContentTypeRestrictedFileField(FileField): 
    """ 
    Same as FileField, but you can specify: 
     * content_types - list containing allowed content_types. Example: ['application/pdf', 'image/jpeg'] 
     * max_upload_size - a number indicating the maximum file size allowed for upload. 
      2.5MB - 2621440 
      5MB - 5242880 
      10MB - 10485760 
      20MB - 20971520 
      50MB - 5242880 
      100MB 104857600 
      250MB - 214958080 
      500MB - 429916160 
    """ 
    def __init__(self, *args, **kwargs): 
     self.content_types = kwargs.pop("content_types") 
     self.max_upload_size = kwargs.pop("max_upload_size") 

     super(ContentTypeRestrictedFileField, self).__init__(*args, **kwargs) 

    def clean(self, *args, **kwargs): 
     data = super(ContentTypeRestrictedFileField, self).clean(*args, **kwargs) 

     file = data.file 
     content_type = file.content_type 

     if content_type in self.content_types: 
      if file._size > self.max_upload_size: 
       raise forms.ValidationError(_('Please keep filesize under %s. Current filesize %s') % (filesizeformat(self.max_upload_size), filesizeformat(file._size))) 
     else: 
      raise forms.ValidationError(_('Filetype not supported.')) 

     return data 

を使用したいので、私は1にこれら2つの断片を結合する方法、HTML5を使用してファイルのサイズを確認することができますか?私もビデオをアップロードし、サイズを確認するJavaスニペットが見つかりましたが、私はどのようにそれを実装するための任意のドキュメントを見つけることができません。私はjavascriptを使用することはできません。私はクライアントを信用できません。

+0

簡単に判読できるように、具体的には1つの明確な質問にしてください。それらの引用符が何であれ、関連性のないものをすべて削除します。 – agf

+1

@ミフコが与えた返事はとても怒っていました。私は怒っていると私は怒りを表現するにはあまりにも多くのことを話しました。私は今質問を編集しました – user

答えて

0

djangoのファイル入力ウィジェットに基づいてこのフィールドのウィジェットを作成します。 2番目のスニペットのJSをそのウィジェットの出力に追加します。また、レンダリング時に作成時にフィールドからウィジェットにmax_upload_sizeの値を渡します。

関連する問題