Take a look at django-storages, it's what we use to store audio files in S3. It's a pretty robust django storage backend with decent community support.
On Aug 6, 2010, at 5:06 AM, almacmillan wrote: > Hi there, > > I am a total beginner to programming and Django so I'd appreciate help > that beginner can get his head round! > > I was following a tutorial to show how to upload images to an Amazon > S3 account with the Boto library but I think it is for an older > version of Django (I'm on 1.1.2 and Python 2.65) and something has > changed. I get an error: > Exception Type: TypeError > Exception Value: 'InMemoryUploadedFile' object is unsubscriptable > > My code is: > > Models.py > > from django.db import models > from django.contrib.auth.models import User > from django import forms > from datetime import datetime > > class PhotoUrl(models.Model): > url = models.CharField(max_length=128) > uploaded = models.DateTimeField() > > def save(self): > self.uploaded = datetime.now() > models.Model.save(self) > > views.py > import mimetypes > from django.http import HttpResponseRedirect > from django.shortcuts import render_to_response > from django.core.urlresolvers import reverse > from django import forms > from django.conf import settings > from boto.s3.connection import S3Connection > from boto.s3.key import Key > > def awsdemo(request): > def store_in_s3(filename, content): > conn = S3Connection(settings.AWS_ACCESS_KEY_ID, > settings.AWS_SECRET_ACCESS_KEY) > b = conn.create_bucket('almacmillan-hark') > mime = mimetypes.guess_type(filename)[0] > k = Key(b) > k.key = filename > k.set_metadata("Content-Type", mime) > k.set_contents_from_strong(content) > k.set_acl("public-read") > > photos = PhotoUrl.objects.all().order_by("-uploaded") > if not request.method == "POST": > f = UploadForm() > return render_to_response('awsdemo.html', {'form':f, > 'photos':photos}) > > f = UploadForm(request.POST, request.FILES) > if not f.is_valid(): > return render_to_response('awsdemo.html', {'form':f, > 'photos':photos}) > > file = request.FILES['file'] > filename = file.name > content = file['content'] > store_in_s3(filename, content) > p = PhotoUrl(url="http://almacmillan-hark.s3.amazonaws.com/" + > filename) > p.save() > photos = PhotoUrl.objects.all().order_by("-uploaded") > return render_to_response('awsdemo.html', {'form':f, > 'photos':photos}) > > urls.py > > (r'^awsdemo/$', 'harkproject.s3app.views.awsdemo'), > > awsdemo.html > > <div class="form"> > <strong>{{form.file.label}}</strong> > <form method="POST" action ="." enctype="multipart/form-data"> > {{form.file}}<br/> > <input type="submit" value="Upload"> > </form> > </div> > > I'd really appreciate help. I hope I have provided enough code. > > Kind regards > AL > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.