gofmt programm
This commit is contained in:
parent
40ea8d95df
commit
304a5911e2
1 changed files with 97 additions and 97 deletions
194
go/main.go
194
go/main.go
|
@ -54,118 +54,118 @@ func homeHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func uploadHandler(w http.ResponseWriter, r *http.Request) {
|
func uploadHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
// Setzen der Content Security Policy
|
// Setzen der Content Security Policy
|
||||||
w.Header().Set("Content-Security-Policy", "default-src 'self'; script-src 'self'; object-src 'none';")
|
w.Header().Set("Content-Security-Policy", "default-src 'self'; script-src 'self'; object-src 'none';")
|
||||||
|
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
|
||||||
if time.Since(lastUploadTime) < uploadInterval {
|
if time.Since(lastUploadTime) < uploadInterval {
|
||||||
http.Error(w, "Nur alle 10 Sekunden erlaubt", http.StatusTooManyRequests)
|
http.Error(w, "Nur alle 10 Sekunden erlaubt", http.StatusTooManyRequests)
|
||||||
log.Printf("Bildupload zu häufig. Nur alle 10 Sekunden erlaubt.")
|
log.Printf("Bildupload zu häufig. Nur alle 10 Sekunden erlaubt.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if r.Method == http.MethodPost {
|
if r.Method == http.MethodPost {
|
||||||
file, handler, err := r.FormFile("image")
|
file, handler, err := r.FormFile("image")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Fehler beim Lesen der Datei", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Lesen der Datei", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Lesen der Datei: %v", err)
|
log.Printf("Fehler beim Lesen der Datei: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
// Überprüfen Sie den MIME-Typ der Datei
|
// Überprüfen Sie den MIME-Typ der Datei
|
||||||
buffer := make([]byte, 512) // Genug für die Erkennung des MIME-Typs
|
buffer := make([]byte, 512) // Genug für die Erkennung des MIME-Typs
|
||||||
_, err = file.Read(buffer)
|
_, err = file.Read(buffer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Fehler beim Lesen der Datei", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Lesen der Datei", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Lesen der Datei für MIME-Typ-Erkennung: %v", err)
|
log.Printf("Fehler beim Lesen der Datei für MIME-Typ-Erkennung: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mimeType := http.DetectContentType(buffer)
|
mimeType := http.DetectContentType(buffer)
|
||||||
if !strings.HasPrefix(mimeType, "image/") && !strings.HasPrefix(mimeType, "text/xml") && !strings.HasPrefix(mimeType, "image/svg+xml") {
|
if !strings.HasPrefix(mimeType, "image/") && !strings.HasPrefix(mimeType, "text/xml") && !strings.HasPrefix(mimeType, "image/svg+xml") {
|
||||||
http.Error(w, "Nur Bild-Uploads sind erlaubt", http.StatusBadRequest)
|
http.Error(w, "Nur Bild-Uploads sind erlaubt", http.StatusBadRequest)
|
||||||
log.Printf("Versuch, eine Nicht-Bild-Datei hochzuladen: %v", mimeType)
|
log.Printf("Versuch, eine Nicht-Bild-Datei hochzuladen: %v", mimeType)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = file.Seek(0, io.SeekStart)
|
_, err = file.Seek(0, io.SeekStart)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Fehler beim Zurücksetzen des Dateizeigers", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Zurücksetzen des Dateizeigers", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Zurücksetzen des Dateizeigers: %v", err)
|
log.Printf("Fehler beim Zurücksetzen des Dateizeigers: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ermitteln, ob der ursprüngliche Dateiname erzwungen werden soll
|
// Ermitteln, ob der ursprüngliche Dateiname erzwungen werden soll
|
||||||
//forceName := r.Header.Get("Force-Name")
|
//forceName := r.Header.Get("Force-Name")
|
||||||
forceName := r.FormValue("force_name")
|
forceName := r.FormValue("force_name")
|
||||||
var filename string
|
var filename string
|
||||||
if forceName == "true" {
|
if forceName == "true" {
|
||||||
filename = handler.Filename
|
filename = handler.Filename
|
||||||
} else {
|
} else {
|
||||||
// Zeitstempel zum Dateinamen hinzufügen
|
// Zeitstempel zum Dateinamen hinzufügen
|
||||||
timestamp := time.Now().Format("20060102-150405")
|
timestamp := time.Now().Format("20060102-150405")
|
||||||
filename = fmt.Sprintf("%s-%s", timestamp, handler.Filename)
|
filename = fmt.Sprintf("%s-%s", timestamp, handler.Filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Datei speichern
|
// Datei speichern
|
||||||
uploadPath := "./uploads/" + filename
|
uploadPath := "./uploads/" + filename
|
||||||
f, err := os.Create(uploadPath)
|
f, err := os.Create(uploadPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Fehler beim Erstellen der Datei", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Erstellen der Datei", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Erstellen der Datei: %v", err)
|
log.Printf("Fehler beim Erstellen der Datei: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
_, copyErr := io.Copy(f, file)
|
_, copyErr := io.Copy(f, file)
|
||||||
if copyErr != nil {
|
if copyErr != nil {
|
||||||
http.Error(w, "Fehler beim Kopieren der Datei", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Kopieren der Datei", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Kopieren der Datei: %v", copyErr)
|
log.Printf("Fehler beim Kopieren der Datei: %v", copyErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
lastUploadTime = time.Now() // Setzen Sie die Zeit des letzten Uploads
|
lastUploadTime = time.Now() // Setzen Sie die Zeit des letzten Uploads
|
||||||
|
|
||||||
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)
|
||||||
log.Printf("Fehler beim Laden des Templates: %v", err)
|
log.Printf("Fehler beim Laden des Templates: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data := struct {
|
data := struct {
|
||||||
Message string
|
Message string
|
||||||
Filename string
|
Filename string
|
||||||
}{
|
}{
|
||||||
Message: "Bild erfolgreich hochgeladen.",
|
Message: "Bild erfolgreich hochgeladen.",
|
||||||
Filename: filename, // Geändert, um den möglicherweise modifizierten Dateinamen anzuzeigen
|
Filename: filename, // Geändert, um den möglicherweise modifizierten Dateinamen anzuzeigen
|
||||||
}
|
}
|
||||||
|
|
||||||
err = tmpl.Execute(w, data)
|
err = tmpl.Execute(w, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Fehler beim Rendern des Templates", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Rendern des Templates", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Rendern des Templates: %v", err)
|
log.Printf("Fehler beim Rendern des Templates: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
tmpl, err := template.ParseFiles("templates/uploadForm.html")
|
tmpl, err := template.ParseFiles("templates/uploadForm.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)
|
||||||
log.Printf("Fehler beim Laden des Templates: %v", err)
|
log.Printf("Fehler beim Laden des Templates: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = tmpl.Execute(w, nil)
|
err = tmpl.Execute(w, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Fehler beim Rendern des Templates", http.StatusInternalServerError)
|
http.Error(w, "Fehler beim Rendern des Templates", http.StatusInternalServerError)
|
||||||
log.Printf("Fehler beim Rendern des Templates: %v", err)
|
log.Printf("Fehler beim Rendern des Templates: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funktion zur Ermittlung des MIME-Types basierend auf der Dateiendung
|
// Funktion zur Ermittlung des MIME-Types basierend auf der Dateiendung
|
||||||
|
|
Loading…
Reference in a new issue