Я - sooo близко..., но я не вполне вижу соединение от представления загрузки до модели. Когда я использую обратный вызов в модели FileField
работы загрузки, но я не уверен, где фактическая копия файла происходит. Цель состоит в том, чтобы удостовериться это chunking
происходит, но действие копии файла, кажется, скрыто где-нибудь?
Вот то, что я имею:
Модель:
def get_media_upload_dir(instance, filename):
user_id = instance.user.id
upload_dir = "%s/%d/%s" % (settings.MEDIA_ROOT, user_id, filename)
print "Upload dir set to: %s" % upload_dir
return upload_dir
class MediaFile(models.Model):
media_file = models.FileField(upload_to=get_media_upload_dir)
download_count = models.PositiveIntegerField(default=0)
Посмотреть:
def file_upload(request, course_id):
if request.method == 'POST':
form = FileUploadForm(request.POST, request.FILES)
if form.is_valid():
uploaded = form.cleaned_data['file_upload']
mediaFile = MediaFile(media_file=uploaded,
owner=request.user.profile,
creator=request.user.profile)
mediaFile.save()
return HttpResponseRedirect('/course/%s/' % course_id)
else:
form = FileUploadForm()
return render_to_response('course/file_upload.html', {'form':form,'course':course}, context_instance=RequestContext(request))
Сохранение происходит здесь: http://code.djangoproject.com/browser/django/trunk/django/db/models/fields/files.py#L90 . Django использует собственный API для доступа к файловому хранилищу: http://docs.djangoproject.com/en/dev/ref/files/storage/ . Но если вам нужно разделение на части, вы можете согласиться с предложением Bartek!