func (h *FileHandler) Upload(request shared.IRequest) error { var functionName string var fileCollection string var collectionRef string var collectionId uint64 err := request.URLMatch(&functionName, &fileCollection, &collectionRef, &collectionId) if err != nil { return err } _, r := request.GetRaw() if r.Method != "POST" && r.Method != "PUT" { request.WriteString("Must post a file (1)") return nil } mpr, err := r.MultipartReader() if err != nil { return err } var part *multipart.Part for { thisPart, err := mpr.NextPart() if err != nil { break } if thisPart.FormName() == "attachment" { part = thisPart break } } if part == nil { request.WriteString("Must post a file (2)") return nil } origName := part.FileName() randBytes := make([]byte, 22, 22) _, _ = rand.Reader.Read(randBytes) fileName := hex.EncodeToString(randBytes) bucket, err := h.getBucket() if err != nil { return err } upload, err := ioutil.ReadAll(part) if err != nil { return err } err = bucket.Put(h.Path+fileName, upload, "application/octet-stream", s3.Private) if err != nil { return err } log.Println("File Written") dbEntry := map[string]interface{}{ collectionRef: collectionId, "file": fileName, "filename": origName, } err = h.writeDatabaseEntry(request, dbEntry, fileCollection) if err != nil { return err } request.WriteString(` <script type='text/javascript'> window.top.file_done() </script> Uploaded Successfully. `) return nil }