add json support

This commit is contained in:
Simon Rieger 2024-04-02 15:07:26 +02:00
parent c7fdd04e88
commit bd0ca05155
2 changed files with 51 additions and 20 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
uploads/ uploads/
README-SECRET.md

View file

@ -3,6 +3,7 @@ package main
import ( import (
"crypto/rand" "crypto/rand"
"encoding/base64" "encoding/base64"
"encoding/json"
"fmt" "fmt"
"html/template" "html/template"
"io" "io"
@ -156,6 +157,50 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
lastUploadTime = time.Now() // Setzen Sie die Zeit des letzten Uploads lastUploadTime = time.Now() // Setzen Sie die Zeit des letzten Uploads
// Vor dem Template-Rendering prüfen, ob eine JSON-Antwort erwartet wird
responseType := r.URL.Query().Get("responseType")
if responseType == "json" {
jsonResponse(w, nonce, filename)
return
}
// Template-Rendering-Logik, wenn keine JSON-Antwort erwartet wird
renderTemplate(w, nonce, filename)
} else {
tmpl, err := template.ParseFiles("templates/uploadForm.html")
if err != nil {
http.Error(w, "Fehler beim Laden des Templates", http.StatusInternalServerError)
log.Printf("Fehler beim Laden des Templates: %v", err)
return
}
err = tmpl.Execute(w, nil)
if err != nil {
http.Error(w, "Fehler beim Rendern des Templates", http.StatusInternalServerError)
log.Printf("Fehler beim Rendern des Templates: %v", err)
return
}
}
}
func jsonResponse(w http.ResponseWriter, nonce string, filename string) {
w.Header().Set("Content-Type", "application/json")
response := struct {
Message string `json:"message"`
Filename string `json:"filename"`
Nonce string `json:"nonce"`
}{
Message: "Bild erfolgreich hochgeladen.",
Filename: filename,
Nonce: nonce,
}
json.NewEncoder(w).Encode(response)
}
func renderTemplate(w http.ResponseWriter, nonce string, filename string) {
// Implementierung des Template-Renderings
tmpl, err := template.ParseFiles("templates/uploadSuccess.html") tmpl, err := template.ParseFiles("templates/uploadSuccess.html")
if err != nil { if err != nil {
http.Error(w, "Fehler beim Laden des Templates", http.StatusInternalServerError) http.Error(w, "Fehler beim Laden des Templates", http.StatusInternalServerError)
@ -180,21 +225,6 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
return return
} }
} else {
tmpl, err := template.ParseFiles("templates/uploadForm.html")
if err != nil {
http.Error(w, "Fehler beim Laden des Templates", http.StatusInternalServerError)
log.Printf("Fehler beim Laden des Templates: %v", err)
return
}
err = tmpl.Execute(w, nil)
if err != nil {
http.Error(w, "Fehler beim Rendern des Templates", http.StatusInternalServerError)
log.Printf("Fehler beim Rendern des Templates: %v", err)
return
}
}
} }
// Funktion zur Ermittlung des MIME-Types basierend auf der Dateiendung // Funktion zur Ermittlung des MIME-Types basierend auf der Dateiendung