diff options
Diffstat (limited to 'vendor/github.com/technoweenie/multipartstreamer')
3 files changed, 47 insertions, 58 deletions
diff --git a/vendor/github.com/technoweenie/multipartstreamer/README.md b/vendor/github.com/technoweenie/multipartstreamer/README.md new file mode 100644 index 00000000..dc1f824f --- /dev/null +++ b/vendor/github.com/technoweenie/multipartstreamer/README.md @@ -0,0 +1,47 @@ +# multipartstreamer + +Package multipartstreamer helps you encode large files in MIME multipart format +without reading the entire content into memory. It uses io.MultiReader to +combine an inner multipart.Reader with a file handle. + +```go +package main + +import ( + "github.com/technoweenie/multipartstreamer.go" + "net/http" +) + +func main() { + ms := multipartstreamer.New() + + ms.WriteFields(map[string]string{ + "key": "some-key", + "AWSAccessKeyId": "ABCDEF", + "acl": "some-acl", + }) + + // Add any io.Reader to the multipart.Reader. + ms.WriteReader("file", "filename", some_ioReader, size) + + // Shortcut for adding local file. + ms.WriteFile("file", "path/to/file") + + req, _ := http.NewRequest("POST", "someurl", nil) + ms.SetupRequest(req) + + res, _ := http.DefaultClient.Do(req) +} +``` + +One limitation: You can only write a single file. + +## TODO + +* Multiple files? + +## Credits + +Heavily inspired by James + +https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/Zjg5l4nKcQ0 diff --git a/vendor/github.com/technoweenie/multipartstreamer/examples/multipart.go b/vendor/github.com/technoweenie/multipartstreamer/examples/multipart.go deleted file mode 100644 index 971078be..00000000 --- a/vendor/github.com/technoweenie/multipartstreamer/examples/multipart.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "bytes" - "flag" - "fmt" - "io" - "mime/multipart" - "os" - "path/filepath" -) - -func main() { - defaultPath, _ := os.Getwd() - defaultFile := filepath.Join(defaultPath, "streamer.go") - fullpath := flag.String("path", defaultFile, "Path to the include in the multipart data.") - flag.Parse() - - buffer := bytes.NewBufferString("") - writer := multipart.NewWriter(buffer) - - fmt.Println("Adding the file to the multipart writer") - fileWriter, _ := writer.CreateFormFile("file", *fullpath) - fileData, _ := os.Open(*fullpath) - io.Copy(fileWriter, fileData) - writer.Close() - - fmt.Println("Writing the multipart data to a file") - output, _ := os.Create("multiparttest") - io.Copy(output, buffer) -} diff --git a/vendor/github.com/technoweenie/multipartstreamer/examples/streamer.go b/vendor/github.com/technoweenie/multipartstreamer/examples/streamer.go deleted file mode 100644 index 324f7e12..00000000 --- a/vendor/github.com/technoweenie/multipartstreamer/examples/streamer.go +++ /dev/null @@ -1,27 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "github.com/technoweenie/multipartstreamer" - "io" - "os" - "path/filepath" -) - -func main() { - defaultPath, _ := os.Getwd() - defaultFile := filepath.Join(defaultPath, "streamer.go") - fullpath := flag.String("path", defaultFile, "Path to the include in the multipart data.") - flag.Parse() - - ms := multipartstreamer.New() - - fmt.Println("Adding the file to the multipart writer") - ms.WriteFile("file", *fullpath) - reader := ms.GetReader() - - fmt.Println("Writing the multipart data to a file") - file, _ := os.Create("streamtest") - io.Copy(file, reader) -} |