// Write file to Google Storage func writeFile(client *http.Client, bucket, filename, destname string) error { fmt.Printf("Writing %v to gs://%v ...\n", filename, bucket) fmt.Printf("(Sometimes this takes a few mintues)\n") // dummy value is used since a project name isn't necessary unless // we are creating new buckets ctx := cloud.NewContext("dummy", client) wc := storage.NewWriter(ctx, bucket, destname) wc.ContentType = "application/x-gzip" wc.ACL = []storage.ACLRule{{storage.AllAuthenticatedUsers, storage.RoleReader}} file, err := os.Open(filename) if err != nil { return err } defer file.Close() _, err = io.Copy(wc, file) if err != nil { return err } if err := wc.Close(); err != nil { return err } fmt.Printf("Upload successful!\n") return nil }
func ExampleNewWriter() { ctx := Example_auth() wc := storage.NewWriter(ctx, "bucketname", "filename1") wc.ContentType = "text/plain" wc.ACL = []storage.ACLRule{{storage.AllUsers, storage.RoleReader}} if _, err := wc.Write([]byte("hello world")); err != nil { log.Fatal(err) } if err := wc.Close(); err != nil { log.Fatal(err) } log.Println("updated object:", wc.Object()) }
// createFile creates a file in Google Cloud Storage. func (d *demo) createFile(fileName string) { fmt.Fprintf(d.w, "Creating file /%v/%v\n", bucket, fileName) wc := storage.NewWriter(d.ctx, bucket, fileName) wc.ContentType = "text/plain" wc.Metadata = map[string]string{ "x-goog-meta-foo": "foo", "x-goog-meta-bar": "bar", } d.cleanUp = append(d.cleanUp, fileName) if _, err := wc.Write([]byte("abcde\n")); err != nil { d.errorf("createFile: unable to write data to bucket %q, file %q: %v", bucket, fileName, err) return } if _, err := wc.Write([]byte(strings.Repeat("f", 1024*4) + "\n")); err != nil { d.errorf("createFile: unable to write data to bucket %q, file %q: %v", bucket, fileName, err) return } if err := wc.Close(); err != nil { d.errorf("createFile: unable to close bucket %q, file %q: %v", bucket, fileName, err) return } }