add timestamp to filename support with force name function

This commit is contained in:
Simon Rieger 2024-04-01 11:25:49 +02:00
parent 4b8954d540
commit 40ea8d95df
2 changed files with 102 additions and 89 deletions

View file

@ -91,7 +91,6 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
return return
} }
// Zurücksetzen des Dateizeigers, um die Datei vollständig zu kopieren
_, 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)
@ -99,8 +98,20 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
return return
} }
// Hier können Sie den Dateinamen manipulieren oder einen anderen Speicherort wählen // Ermitteln, ob der ursprüngliche Dateiname erzwungen werden soll
uploadPath := "./uploads/" + handler.Filename //forceName := r.Header.Get("Force-Name")
forceName := r.FormValue("force_name")
var filename string
if forceName == "true" {
filename = handler.Filename
} else {
// Zeitstempel zum Dateinamen hinzufügen
timestamp := time.Now().Format("20060102-150405")
filename = fmt.Sprintf("%s-%s", timestamp, handler.Filename)
}
// Datei speichern
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)
@ -118,7 +129,6 @@ 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
// Nach erfolgreichem Upload:
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)
@ -131,7 +141,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
Filename string Filename string
}{ }{
Message: "Bild erfolgreich hochgeladen.", Message: "Bild erfolgreich hochgeladen.",
Filename: handler.Filename, Filename: filename, // Geändert, um den möglicherweise modifizierten Dateinamen anzuzeigen
} }
err = tmpl.Execute(w, data) err = tmpl.Execute(w, data)
@ -142,7 +152,6 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
} }
} 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)

View file

@ -5,7 +5,11 @@
</head> </head>
<body> <body>
<form action="/upload" method="post" enctype="multipart/form-data"> <form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="image"> <input type="file" name="image" required>
<br>
<input type="checkbox" name="force_name" value="true">
<label for="force_name">Originalnamen beibehalten (Force Name)</label>
<br>
<input type="submit" value="Hochladen"> <input type="submit" value="Hochladen">
</form> </form>
</body> </body>