golang s3cp.go
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang s3cp.go相关的知识,希望对你有一定的参考价值。
// From https://github.com/kr/s3/tree/master/s3cp
// Added public read for uploaded files
// Command s3cp copies a file to or from Amazon S3.
//
// Usage:
//
// s3cp file url
// s3cp url file
//
// The file does not need to be seekable or stat-able. You can use s3cp to
// upload data of indeterminate length, such as from a pipe.
//
// Examples:
// $ s3cp file.txt https://mybucket.s3.amazonaws.com/file.txt
// $ gendata | s3cp /dev/stdin https://mybucket.s3.amazonaws.com/log
// $ s3cp https://mybucket.s3.amazonaws.com/image.jpg pic.jpg
//
// Environment:
//
// S3_ACCESS_KEY – an AWS Access Key Id (required)
//
// S3_SECRET_KEY – an AWS Secret Access Key (required)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
"github.com/kr/s3/s3util"
)
func main() {
s3util.DefaultConfig.AccessKey = os.Getenv("S3_ACCESS_KEY")
s3util.DefaultConfig.SecretKey = os.Getenv("S3_SECRET_KEY")
args := os.Args[1:]
if len(args) != 2 {
fmt.Fprintln(os.Stderr, "Usage: s3cp file url")
fmt.Fprintln(os.Stderr, " s3cp url file")
os.Exit(1)
}
r, err := open(args[0])
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
w, err := create(args[1])
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
_, err = io.Copy(w, r)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
err = w.Close()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func open(s string) (io.ReadCloser, error) {
if isURL(s) {
return s3util.Open(s, nil)
}
return os.Open(s)
}
func create(s string) (io.WriteCloser, error) {
if isURL(s) {
header := make(http.Header)
header.Add("x-amz-acl", "public-read")
return s3util.Create(s, header, nil)
}
return os.Create(s)
}
func isURL(s string) bool {
return strings.HasPrefix(s, "http://") || strings.HasPrefix(s, "https://")
}
golang为啥没有官方的gui包
有两个方面的原因,一是golang gui想让第三方来做 , 二是官方对golang的定位是主做后台。。。
参考技术A
因为golang官方主要把精力投入到go本身的发展中去(更准确的GC算法、更高的并发)。 而golang的主要贡献者不多,所以还不是很忙的过来,golang官方希望GUI可以靠社区推动发展,官方本身是没有意向发布GUI包的。
以上是关于golang s3cp.go的主要内容,如果未能解决你的问题,请参考以下文章
Golang 入门
Golang入门到项目实战 第一个golang应用
golang编译androidso无法加载
golang如何打印内存内容
Golang入门到项目实战 golang匿名函数
json [Golang] golang #golang #snippets中有用的片段