Browse Source

fileupload versuch

pull/1/head
Georg Spar 1 year ago
parent
commit
8bf8de541a
  1. 3
      data.go
  2. 78
      wdm.go

3
data.go

@ -2,6 +2,9 @@ package main
import "database/sql"
// Pfad für die Ablage der Uploads
var UploadPfad string = "/opt/data/uploads"
// struct für das Einbinden von Items, die gekauft wurden
type Itemb struct {
Id uint64 `json:"id"`

78
wdm.go

@ -53,6 +53,9 @@ func main() {
r.HandleFunc("/api/v1/itb", showItemBHandler).Methods("GET", "OPTIONS")
r.HandleFunc("/api/v1/itb/{id:[0-9]+}", getItemBHandler).Methods("GET", "OPTIONS")
r.HandleFunc("/api/v1/itb/{id:[0-9]+}", updateItemBHandler).Methods("PUT", "OPTIONS")
r.HandleFunc("/api/v1/upload", uploadFileHandler).Methods("POST", "OPTIONS")
/*
r.HandleFunc("/api/v1/ite", createItemExtHandler).Methods("POST", "OPTIONS")
r.HandleFunc("/api/v1/ite/{id:[0-9]+}", deleteItemExtHandler).Methods("DELETE", "OPTIONS")
@ -701,3 +704,78 @@ func updateItemBHandler(writer http.ResponseWriter, req *http.Request) {
writer.WriteHeader(http.StatusOK)
writer.Write(b)
}
// Upload Funktionen
func uploadFileHandlerHandler(writer http.ResponseWriter, req *http.Request) {
writer.Header().Set("Access-Control-Allow-Origin", "*")
if req.Method == http.MethodOptions {
return
}
err := req.ParseMultipartForm(64 << 20)
if err != nil {
writer.WriteHeader(http.StatusBadRequest)
return
}
var pho []Photos
if req.Form["files"] != nil {
for i := 0; i < len(req.Form["files"]); i++ {
log.Info("File-Name:", req.FormValue("files[i].name"))
file, handler, err := req.FormFile("files[i]")
if err != nil {
panic(err) //dont do this
}
defer file.Close()
os.Chdir(UploadPfad)
// copy example
f, err := os.OpenFile(handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
panic(err) //please dont
}
defer f.Close()
io.Copy(f, file)
pho[i].Pfad = handler.Filename
pho[i].ItembId = 0
pho[i].ItemextId = 0
}
for formKey, formValue := range req.Form {
log.WithFields(log.Fields{formKey: formValue}).Info("parsing from Form: ")
}
} else {
body, err := io.ReadAll(req.Body)
if err != nil {
writer.WriteHeader(http.StatusBadRequest)
}
var pho []Photos
json.Unmarshal(body, &pho)
}
if len(pho) == 0 {
log.Fatal("Error: Size of Array = 0")
writer.WriteHeader(http.StatusInternalServerError)
}
for i := 0; i < len(pho); i++ {
log.Println(pho[i])
log.Println("Name= ", pho[i].Pfad)
log.Info("creating new Photo", pho[i].Pfad)
res, err := CreatePhoto(pho[i])
if err != nil {
writer.WriteHeader(http.StatusInternalServerError)
}
b, err := json.Marshal(res)
if err != nil {
log.Fatal("Error: ", err)
}
location := fmt.Sprintf("%s/%d", req.URL.String(), res.Id)
writer.Header().Set("Location:", location)
writer.Header().Set("Content-Type", "application/json")
writer.WriteHeader(http.StatusCreated)
writer.Write(b)
}
}

Loading…
Cancel
Save