diff --git a/cmd/frontend/pdf.go b/cmd/frontend/pdf.go new file mode 100644 index 0000000..e00069c --- /dev/null +++ b/cmd/frontend/pdf.go @@ -0,0 +1,66 @@ +package frontend + +import ( + "fmt" + "io" + "log" + "net/http" + "os" + "path/filepath" + + "github.com/google/uuid" + b "streifling.com/jason/cpolis/cmd/backend" +) + +func UploadPDF(c *b.Config, s *b.CookieStore) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + fmt.Println("Content-Type:", r.Header.Get("Content-Type")) + if _, err := getSession(w, r, c, s); err != nil { + return + } + + fmt.Println(1) + if err := r.ParseMultipartForm(10 << 20); err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + fmt.Println(2) + file, _, err := r.FormFile("pdf-upload") + if err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer file.Close() + + fmt.Println(3) + filename := fmt.Sprint(uuid.New(), ".pdf") + absFilepath, err := filepath.Abs(fmt.Sprint(c.PDFDir, "/", filename)) + if err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + fmt.Println(4) + pdf, err := os.Create(absFilepath) + if err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer pdf.Close() + + fmt.Println(5) + if _, err = io.Copy(pdf, file); err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + fmt.Println(6) + w.WriteHeader(http.StatusOK) + } +} diff --git a/web/templates/hub.html b/web/templates/hub.html index 4599a43..19dbf06 100644 --- a/web/templates/hub.html +++ b/web/templates/hub.html @@ -16,7 +16,7 @@ {{if lt . 3}}

Redakteur

-
+
@@ -28,9 +28,14 @@ {{if lt . 2}}

Herausgeber

-
+
+
+ + +
{{end}}