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.

Reply via email to