cleanupOldFiles: Diese Funktion durchsucht das Upload-Verzeichnis und löscht Dateien, die älter als 48 Stunden sind.
startCleanupProcess: Ein Hintergrundprozess, der cleanupOldFiles jede Stunde ausführt, um alte Dateien zu entfernen. fileLifetime: Die Lebensdauer der Dateien ist auf 48 Stunden gesetzt. Dateien, die älter sind, werden gelöscht.
This commit is contained in:
parent
8bcfea0395
commit
041922ea6d
1 changed files with 42 additions and 0 deletions
42
go/main.go
42
go/main.go
|
@ -23,7 +23,16 @@ var (
|
|||
uploadInterval = 10 * time.Second
|
||||
)
|
||||
|
||||
const (
|
||||
uploadDir = "./uploads"
|
||||
cleanupInterval = 1 * time.Hour
|
||||
fileLifetime = 48 * time.Hour
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Starten Sie den Hintergrundprozess zum Löschen alter Dateien
|
||||
go startCleanupProcess()
|
||||
|
||||
http.HandleFunc("/", homeHandler)
|
||||
http.HandleFunc("/upload", uploadHandler)
|
||||
http.HandleFunc("/image/", imageHandler)
|
||||
|
@ -36,6 +45,39 @@ func main() {
|
|||
http.ListenAndServe(":8080", nil)
|
||||
}
|
||||
|
||||
func startCleanupProcess() {
|
||||
ticker := time.NewTicker(cleanupInterval)
|
||||
defer ticker.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
cleanupOldFiles()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func cleanupOldFiles() {
|
||||
now := time.Now()
|
||||
err := filepath.Walk(uploadDir, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !info.IsDir() && now.Sub(info.ModTime()) > fileLifetime {
|
||||
err := os.Remove(path)
|
||||
if err != nil {
|
||||
log.Printf("Fehler beim Löschen der Datei %s: %v", path, err)
|
||||
} else {
|
||||
log.Printf("Datei gelöscht: %s", path)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Printf("Fehler beim Durchsuchen des Verzeichnisses: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func homeHandler(w http.ResponseWriter, r *http.Request) {
|
||||
// Setzen der Content Security Policy
|
||||
w.Header().Set("Content-Security-Policy", "default-src 'self'; script-src 'self'; object-src 'none';")
|
||||
|
|
Loading…
Reference in a new issue