fix: prioritize filename extension in materialTypeFromMime for .md files
.md files are uploaded as text/plain mime, causing materialTypeFromMime to return .text instead of .markdown. Extension now checked first. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
4059f0197e
commit
88babf14f8
@ -265,7 +265,7 @@ struct LibraryDetailPage: View {
|
||||
NavigationLink(value: Route.materialReader(
|
||||
materialId: src.id,
|
||||
filePath: "",
|
||||
materialType: materialTypeFromMime(src.mimeType),
|
||||
materialType: materialTypeFromMime(src.mimeType, filename: src.originalFilename),
|
||||
knowledgeBaseId: knowledgeBaseId,
|
||||
title: src.originalFilename ?? src.title ?? "未命名"
|
||||
)) {
|
||||
@ -1496,7 +1496,16 @@ struct EditKnowledgePage: View {
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
private func materialTypeFromMime(_ mime: String?) -> MaterialType {
|
||||
private func materialTypeFromMime(_ mime: String?, filename: String? = nil) -> MaterialType {
|
||||
let ext = filename?.split(separator: ".").last?.lowercased()
|
||||
// Extension takes priority for known types
|
||||
if ext == "md" || ext == "markdown" { return .markdown }
|
||||
if ext == "pdf" { return .pdf }
|
||||
if ext == "epub" { return .epub }
|
||||
if ext == "docx" || ext == "doc" { return .word }
|
||||
if ext == "xlsx" || ext == "xls" { return .excel }
|
||||
if ext == "pptx" || ext == "ppt" { return .powerPoint }
|
||||
// Fallback to mime
|
||||
guard let m = mime?.lowercased() else { return .markdown }
|
||||
if m.contains("pdf") { return .pdf }
|
||||
if m.contains("epub") { return .epub }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user