Skip to content

Commit 88d85ff

Browse files
committed
file upload
1 parent d1523f5 commit 88d85ff

File tree

2 files changed

+81
-30
lines changed

2 files changed

+81
-30
lines changed

pkg/list/list.go

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import (
1010
"fmt"
1111
"io"
1212
"net/http"
13-
"os"
14-
"path/filepath"
13+
"strings"
1514

1615
"cloud.google.com/go/storage"
1716
"go.uber.org/zap"
@@ -61,38 +60,42 @@ func (s *ListService) UploadMatch(w http.ResponseWriter, r *http.Request) {
6160
w.Header().Set("Access-Control-Allow-Credentials", "true")
6261
}
6362

64-
n := r.Form.Get("name")
65-
// Retrieve the file from form data
66-
f, h, err := r.FormFile("fileupload")
67-
if err != nil {
68-
log.L().Error("something wrong", zap.Error(err))
63+
if r.Method != "POST" {
64+
log.L().Info("unexpected upload request method", zap.Any("request", *r))
65+
return
6966
}
70-
defer f.Close()
71-
path := filepath.Join(".", "files")
72-
_ = os.MkdirAll(path, os.ModePerm)
73-
fullPath := path + "/" + n
74-
file, err := os.OpenFile(fullPath, os.O_WRONLY|os.O_CREATE, os.ModePerm)
67+
68+
// r.ParseMultipartForm(100 << 20)
69+
file, handler, err := r.FormFile("demoFile")
7570
if err != nil {
76-
log.L().Error("something else wrong", zap.Error(err))
71+
// fmt.Println("Error Retrieving the File")
72+
fmt.Println(err)
73+
return
7774
}
7875
defer file.Close()
79-
// Copy the file to the destination path
80-
_, err = io.Copy(file, f)
81-
if err != nil {
82-
log.L().Error("something else even more wrongwrong", zap.Error(err))
76+
if !strings.HasSuffix(handler.Filename, ".dem.gz") {
77+
http.Error(w, fmt.Sprintf("unexpected file type [%s]", handler.Filename), http.StatusBadRequest)
78+
return
79+
}
80+
log.L().Info("uploading file", zap.String("filename", handler.Filename), zap.Int64("filesize", handler.Size), zap.Any("mime", handler.Header))
81+
objHandle := s.gcpBucket.Object(handler.Filename)
82+
log.L().Info("1")
83+
objWriter := objHandle.NewWriter(r.Context())
84+
log.L().Info("2")
85+
// Copy the uploaded file to the created file on the filesystem
86+
if _, err := io.Copy(objWriter, file); err != nil {
87+
88+
log.L().Info("3")
89+
http.Error(w, err.Error(), http.StatusInternalServerError)
90+
return
8391
}
84-
log.L().Info("finally uploadd", zap.String("file", n+filepath.Ext(h.Filename)))
85-
86-
// obj := s.gcpBucket.Object("test")
87-
// writer := obj.NewWriter(r.Context())
88-
// if _, writeErr := fmt.Fprintf(writer, "This is test upload file 2"); writeErr != nil {
89-
// http.Error(w, writeErr.Error(), http.StatusInternalServerError)
90-
// log.L().Error("failed to write to gcp file", zap.Error(writeErr))
91-
// }
92-
// if err := writer.Close(); err != nil {
93-
// http.Error(w, err.Error(), http.StatusInternalServerError)
94-
// log.L().Error("failed to close gcp filewriter", zap.Error(err))
95-
// }
92+
if err := objWriter.Close(); err != nil {
93+
log.L().Error("fail to close gcp object writer", zap.Error(err))
94+
}
95+
96+
log.L().Info("4")
97+
98+
fmt.Fprintf(w, "Successfully Uploaded File\n")
9699
}
97100

98101
func (s *ListService) gcpStorage(ctx context.Context) ([]match.MatchInfo, error) {

web/index/src/Uploader/Uploader.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,57 @@ const Uploader = (props) => {
77
const onUpload = function (event) {
88
console.log("file upload", event)
99
}
10+
11+
const uploadHandler = function ({ files }) {
12+
const [file] = files;
13+
let formData = new FormData();
14+
formData.append('demoFile', file);
15+
16+
fetch(serverHost + "/match/upload",
17+
{
18+
method: 'POST',
19+
body: formData
20+
},
21+
).catch(err => {
22+
console.log("failed to upload")
23+
})
24+
25+
// const fileReader = new FileReader();
26+
// fileReader.onload = (e) => {
27+
// uploadDemo(e.target.result);
28+
// };
29+
// fileReader.readAsDataURL(file);
30+
}
31+
32+
const uploadDemo = async (demoFile) => {
33+
let formData = new FormData();
34+
formData.append('demoFile', demoFile);
35+
36+
const response = await fetch(serverHost + "/match/upload",
37+
{
38+
method: 'POST',
39+
body: formData
40+
},
41+
);
42+
console.log(response)
43+
};
44+
const onProgress = (event) => {
45+
console.log("progress", event)
46+
}
47+
1048
return (
1149
<div>
12-
<FileUpload mode="basic" name="demo[]" url={serverHost + "/match/upload"} accept="application/*" maxFileSize={10000000} onUpload={onUpload} auto />
50+
<FileUpload
51+
mode="basic"
52+
name="demoFile"
53+
url={serverHost + "/match/upload"}
54+
accept="application/*"
55+
maxFileSize={200_000_000}
56+
onUpload={onUpload}
57+
onProgress={onProgress}
58+
// customUpload={true}
59+
// uploadHandler={uploadHandler}
60+
auto />
1361
</div>
1462
)
1563
}

0 commit comments

Comments
 (0)