diff --git a/backend/handlers/handle_message_upload.go b/backend/handlers/handle_message_upload.go index 8a106e1..56453f9 100644 --- a/backend/handlers/handle_message_upload.go +++ b/backend/handlers/handle_message_upload.go @@ -71,6 +71,14 @@ func (store *Store) UploadMessageFile(ctx *gin.Context) { filename := hex.EncodeToString(b) + ext uploadDir := "/backend/uploads/" + if err := os.MkdirAll(uploadDir, 0755); err != nil { + ctx.JSON(http.StatusInternalServerError, gin.H{"error": "failed to create upload directory"}) + return + } + if err := os.Chmod(uploadDir, 0755); err != nil { + ctx.JSON(http.StatusInternalServerError, gin.H{"error": "failed to set directory permissions"}) + return + } dest := filepath.Join(uploadDir, filename) if err := ctx.SaveUploadedFile(file, dest); err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{"error": "failed to save file"}) diff --git a/nginx/entrypoint.sh b/nginx/entrypoint.sh index 38981b1..3e1eccb 100755 --- a/nginx/entrypoint.sh +++ b/nginx/entrypoint.sh @@ -17,5 +17,8 @@ else envsubst '${DOMAIN}' /etc/nginx/nginx.conf fi +# Ensure upload directory is traversable by nginx worker +chmod 755 /uploads 2>/dev/null || true + # Start nginx nginx -g 'daemon off;'