title: Upload a file using boto
body: <pre><code>import boto
  conn = boto.connect_s3('',  '')
  
  mybucket = conn.get_bucket('data_report_321')
  </code></pre>
  
  <p>I can download the file from a bucket using the following code.</p>
  
  <pre><code>for b in mybucket:
       print b.name
       b.get_contents_to_filename('0000_part_00', headers=None, cb=None, num_cb=10, torrent=False, version_id=None, res_download_handler=None, response_headers=None)
  </code></pre>
  
  <p>But I am <strong>not able to upload</strong> a file. I get an error:
  AttributeError: 'str' object has no attribute 'tell'</p>
  
  <p>send_file nor set_contents functions are working as expected.</p>
  
  <pre><code>for b in mybucket:
       b.send_file('mytest.txt', headers=None, cb=None, num_cb=10, query_args=None, chunked_transfer=False, size=None)
       b.set_contents_from_file('mytest.txt', headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None, reduced_redundancy=False, query_args=None, encrypt_key=False, size=None, rewind=False)
  </code></pre>
  
  <p>How do I upload a file from current directory of local server to S3 bucket using boto?</p>
  
  <hr>
  
  <p>Update:
  I need to declare the key (filename) of the uploaded file first before calling the set_contents_from_filename function.</p>
  
  <pre><code>k = boto.s3.key.Key(mybucket)
  k.key = 'uploaded_file.txt'
  k.set_contents_from_filename("myteswt.txt")
  </code></pre>