I'm sooo close... but I don't quite see the connection from the upload view to the model. When I use the callback in the model's FileField
the upload works, but I'm not sure where the actual file copy is taking place. The goal is to make sure that chunking
is happening, but the file copy action seems to be hidden somewhere?
Here's what I have:
Model:
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)
View:
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))
The storing happens here: http://code.djangoproject.com/browser/django/trunk/django/db/models/fields/files.py#L90 . Django uses it's own API for accessing the file storage: http://docs.djangoproject.com/en/dev/ref/files/storage/ . But if chunking is what you need you can go with Bartek's proposal!
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.