Tencent/WeKnora · error
invalid file path: %w
Error message
invalid file path: %w
What it means
MinIO path parser guard: the object key was rejected by SafeObjectKey, meaning it contains unsafe constructs (path traversal such as .., absolute markers, or invalid characters); the operation is refused to prevent accessing keys outside the intended prefix.
Source
Thrown at internal/application/service/file/minio.go:117
}
// parseMinioFilePath extracts the object name from a provider scheme: minio://{bucket}/{objectKey}
func (s *minioFileService) parseMinioFilePath(filePath string) (string, error) {
// Provider scheme format: minio://{bucket}/{objectKey}
const prefix = "minio://"
if !strings.HasPrefix(filePath, prefix) {
return "", fmt.Errorf("invalid MinIO file path: %s", filePath)
}
rest := strings.TrimPrefix(filePath, prefix)
parts := strings.SplitN(rest, "/", 2)
if len(parts) != 2 || parts[0] == "" || parts[1] == "" {
return "", fmt.Errorf("invalid MinIO file path: %s", filePath)
}
if parts[0] != s.bucketName {
return "", fmt.Errorf("bucket mismatch in path: got %s, want %s", parts[0], s.bucketName)
}
if err := utils.SafeObjectKey(parts[1]); err != nil {
return "", fmt.Errorf("invalid file path: %w", err)
}
return parts[1], nil
}
// SaveFile saves a file to MinIO
func (s *minioFileService) SaveFile(ctx context.Context,
file *multipart.FileHeader, tenantID uint64, knowledgeID string,
) (string, error) {
// Generate object name
ext := filepath.Ext(file.Filename)
objectName := fmt.Sprintf("%d/%s/%s%s", tenantID, knowledgeID, uuid.New().String(), ext)
// Open file
src, err := file.Open()
if err != nil {
return "", fmt.Errorf("failed to open file: %w", err)
}
defer src.Close()View on GitHub (pinned to 988cbb0330)
Solutions
- Sanitize object keys before storing or requesting them
- Reject traversal-prone keys where the path originates
- Log the offending key for input tracing
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/application/service/file/minio.go:117 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/6b03ed63d43985a1.
Report an issue: GitHub.