title: TypeError uploading image file to Amazon S3 in Django using BOTO Library
body: <p>I am a total beginner to programming and Django so I'd appreciate help that beginner can get his head round!</p>
  
  <p>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</p>
  
  <p>My code is:</p>
  
  <p><strong>Models.py:</strong></p>
  
  <pre><code>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)
  </code></pre>
  
  <p><strong>views.py:</strong></p>
  
  <pre><code>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})
  </code></pre>
  
  <p><strong>urls.py:</strong></p>
  
  <pre><code>(r'^awsdemo/$', 'harkproject.s3app.views.awsdemo'), 
  </code></pre>
  
  <p><strong>awsdemo.html:</strong></p>
  
  <pre><code>&lt;div class="form"&gt;
      &lt;strong&gt;{{form.file.label}}&lt;/strong&gt;
      &lt;form method="POST" action ="." enctype="multipart/form-data"&gt;
          {{form.file}}&lt;br/&gt;
          &lt;input type="submit" value="Upload"&gt;
      &lt;/form&gt; 
  &lt;/div&gt;  
  </code></pre>
  
  <p>I'd really appreciate help. I hope I have provided enough code.</p>
  
  <p>Kind regards
  AL</p>