engine-api icon indicating copy to clipboard operation
engine-api copied to clipboard

file content from CopyFromContainer

Open SDkie opened this issue 9 years ago • 1 comments

If I write the content to a file its adding some header and footer to the file. What is the issue?

Sample code

reader, _, err = CopyFromContainer(context.TODO(), containerId, path)
f, err = os.Create("tempFile")
n, err = io.Copy(f, reader)

SDkie avatar Jul 08 '16 15:07 SDkie

It is because its the tar file in the reader.

import("archive/tar")
....
reader, _, err = CopyFromContainer(context.TODO(), containerId, path)
if err != nil{
                log.Println(err.Error())
}
tr := tar.NewReader(reader)
for {
                // hdr gives you the header of the tar file
                hdr, err := tr.Next()
                if err == io.EOF {
                        // end of tar archive
                        break
                }
                if err != nil {
                        log.Fatalln(err)
                }
                buf := new(bytes.Buffer)
                buf.ReadFrom(tr)
                
                // You can use this wholeContent to create new file
                wholeContent := buf.String()
                
                fmt.Println("Whole of the string of ", hdr.Name ," is ",wholeContent)
                
}

This gives you the content, you can use to create files on your own. Look into https://golang.org/pkg/archive/tar/#pkg-examples

prayas-stha avatar Feb 28 '17 15:02 prayas-stha