code: func New(r io.Reader) (ReadSeekCloser, error) {
  	tf, err := ioutil.TempFile(os.TempDir(), "temporary-file")
  	if err != nil {
  		return nil, err
  	}
  
  	f := &unlinkOnCloseFile{tf}
  	successful := false
  	defer func() {
  		if !successful {
  			f.Close()
  		}
  	}()
  
  	if _, err := io.Copy(f, r); err != nil {
  		return nil, err
  	}
  	if _, err := f.Seek(0, 0); err != nil {
  		return nil, err
  	}
  	successful = true
  	return f, nil
  }
docs: // New will take in a io.Reader and write its content to a new temporary
  // file. The temporary file will be automatically removed when it closed.