title: How do I go from io.ReadCloser to io.ReadSeeker?
body: <p>I'm trying to download a file from S3 and upload that file to another bucket in S3.  Copy API won't work here because I've been told not to use it.</p>
  
  <p>Getting an object from S3 has a <code>response.Body</code> that's an <code>io.ReadCloser</code> and to upload that file, the payload takes a <code>Body</code> that's an <code>io.ReadSeeker</code>.</p>
  
  <p>The only way I can figure this out is by saving the <code>response.Body</code> to a file then passing that file as a <code>io.ReadSeeker</code>.  This would require writing the entire file to disk first then reading the entire file from disk which sounds pretty wrong.</p>
  
  <p>What I would like to do is:</p>
  
  <pre><code>resp, _ := conn.GetObject(&amp;s3.GetObjectInput{Key: "bla"})
  conn.PutObject(&amp;s3.PutObjectInput{Body: resp.Body}) // resp.Body is an io.ReadCloser and the field type expects an io.ReadSeeker
  </code></pre>
  
  <p>Question is, how do I go from an <code>io.ReadCloser</code> to an <code>io.ReadSeeker</code> in the most efficient way possible? </p>