feat: 支持上传文本/代码文件给 Ollama 分析

- utils.js: 新增 fileToText() 读取文件文本、detectLanguage() 识别编程语言
- index.html: 新增文件上传按钮(📄)和文件预览容器
- input-area.js: 完整文件上传流程(校验/读取/预览/消息构造/发送)
- style.css: 文件 chip 预览样式

支持 50+ 种文本/代码扩展名,文件内容以代码块格式嵌入消息。
单文件限制 500KB,支持多文件同时上传。
This commit is contained in:
Metona
2026-04-04 21:08:21 +08:00
parent 2fa274e1b1
commit 7f31034073
4 changed files with 255 additions and 26 deletions
+64
View File
@@ -806,6 +806,70 @@ body::before {
justify-content: center;
}
/* ── 文件预览区域 ── */
.file-preview {
display: flex;
flex-wrap: wrap;
gap: 8px;
padding: 8px 0;
}
.file-chip {
display: flex;
align-items: center;
gap: 6px;
padding: 5px 10px;
border-radius: 8px;
background: rgba(0, 245, 212, 0.06);
border: 1px solid rgba(0, 245, 212, 0.18);
font-size: 12px;
line-height: 1;
transition: var(--transition);
animation: fadeInUp 0.2s ease;
}
.file-chip:hover {
border-color: rgba(0, 245, 212, 0.35);
background: rgba(0, 245, 212, 0.1);
}
.file-icon {
font-size: 14px;
flex-shrink: 0;
}
.file-name {
font-weight: 600;
color: var(--text-primary);
max-width: 160px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.file-size {
color: var(--text-muted);
flex-shrink: 0;
}
.remove-file {
background: none;
border: none;
color: var(--text-muted);
cursor: pointer;
font-size: 15px;
line-height: 1;
padding: 0 2px;
border-radius: 4px;
transition: var(--transition);
flex-shrink: 0;
}
.remove-file:hover {
color: var(--accent-red);
background: rgba(239, 68, 68, 0.1);
}
.input-row {
display: flex;
align-items: flex-end;