Я задавал вопросы по этой теме много recently.Как определить размер файла видео до его загрузки?
я создал мой форма загрузки
models.py
from django.db import models
from app.extra import ContentTypeRestrictedFileField
class upload(models.Model):
""" upload """
name = models.CharField(max_length=100)
description = models.CharField(max_length=250)
file = ContentTypeRestrictedFileField(
upload_to='/media/videos,'
content_types=['video/avi', 'video/mp4', 'video/3gp', 'video/wmp', 'video/flv', 'video/mov'],
max_upload_size=104857600
)
created = models.DateTimeField('created', auto_now_add=True)
modified = models.DateTimeField('modified', auto_now=True)
def __unicode__(self):
return self.name
form.py
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, content_types=None,max_upload_size=104857600, **kwargs):
self.content_types = kwargs.pop('video/avi', 'video/mp4', 'video/3gp', 'video/wmp', 'video/flv', 'video/mov')
self.max_upload_size = max_upload_size
super(ContentTypeRestrictedFileField, self).__init__(**kwargs)
def clean(self, *args, **kwargs):
data = super(ContentTypeRestrictedFileField, self).clean(*args, **kwargs)
file = data.file
try:
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.'))
except AttributeError:
pass
return data
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^app\.extra\.ContentTypeRestrictedFileField"])
и добавить линии settings.py
FILE_UPLOAD_MAX_MEMORY_SIZE = 157286400 # 157286400 bytes = 150 MB
мне сказали, чтобы использовать this snippet, и я нашел this snippet
Но есть вопрос, который я не видел, пользователь djangosnippets сказать
If you're ok with letting people use up all your bandwidth for uploading 1GB
files to your servers just to delete them as soon as the upload finishes,
sure it's a great solution.
см this question. Этот вопрос касается asp.net, я использую django. Итак, как определить размер файла видео до того, как вы его загрузите, в django
«Если вы в порядке, разрешите людям использовать всю вашу пропускную способность для загрузки файлов 1GB на свои серверы, чтобы удалить их, как только загрузка закончится, уверен, что это отличное решение ". Внутренний абонент может отправить запрос POST с данными 1 Гб, а сервер все равно будет получать эти данные: '$ локона -F [email protected] HTTP: // foo.com /' Я верю, что большинство хостинга провайдеры не взимают плату за входящую пропускную способность. –