编辑 server/.env 文件:
# 智谱AI API Key(必需 - 用于AI分析)
ZHIPU_API_KEY=your_api_key_here获取 API Key:
- 访问 智谱AI开放平台
- 注册/登录账号
- 在控制台创建 API Key
- 复制到配置文件
# 最大文件大小(字节,默认10MB)
MAX_FILE_SIZE=10485760
# 上传目录(相对路径或绝对路径)
UPLOAD_DIR=./uploads
# 允许的文件类型(逗号分隔)
ALLOWED_FILE_TYPES=image/png,image/jpeg,image/gif,image/webp,application/pdf,text/plain
# 缩略图宽度(像素)
THUMBNAIL_WIDTH=300
# 缩略图质量(1-100)
THUMBNAIL_QUALITY=80运行部署脚本会自动创建附件相关表:
./deploy-all.sh如需手动配置,执行以下SQL:
psql -U cogniflow_user -d cogniflow -f database/migrations/007_attachments_support.sql- attachments - 附件信息表
- attachment_configs - 附件配置表
- user_attachment_stats - 用户统计视图
附件存储在服务器本地文件系统:
uploads/
├── images/ # 图片文件
├── documents/ # 文档文件
├── videos/ # 视频文件
├── audios/ # 音频文件
├── others/ # 其他文件
└── thumbnails/ # 缩略图
如需使用云存储(阿里云OSS、AWS S3等),需要:
- 安装对应的SDK
- 修改
server/services/attachmentService.ts - 配置云存储认证信息
确保上传目录有正确的权限:
# 创建上传目录
mkdir -p uploads/{images,documents,videos,audios,others,thumbnails}
# 设置权限
chmod 755 uploads
chmod 755 uploads/*
chown -R your_user:your_group uploads确保数据库用户有创建表的权限:
GRANT ALL PRIVILEGES ON DATABASE cogniflow TO cogniflow_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO cogniflow_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO cogniflow_user;在 server/routes/attachments.ts 中配置:
const MAX_CONCURRENT_UPLOADS = 3; // 最大并发上传数如果AI分析请求较多,可以配置队列:
# AI分析并发数
AI_ANALYSIS_CONCURRENCY=5
# AI分析超时时间(毫秒)
AI_ANALYSIS_TIMEOUT=30000为附件API响应添加缓存:
// 缓存时间(秒)
const ATTACHMENT_CACHE_TTL = 3600;严格限制允许的文件类型:
const ALLOWED_MIME_TYPES = [
'image/png',
'image/jpeg',
'image/gif',
'image/webp',
'application/pdf',
'text/plain',
'text/markdown',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
];根据业务需求调整大小限制:
const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB集成病毒扫描工具:
# 安装 ClamAV
sudo apt-get install clamav clamav-daemon
# 在服务中集成扫描启用附件上传日志:
// 在 server/services/attachmentService.ts 中
console.log('[Attachment] Upload:', {
userId,
fileName,
fileSize,
mimeType,
timestamp: new Date().toISOString()
});定期检查用户附件使用情况:
-- 查看附件使用统计
SELECT * FROM user_attachment_stats
WHERE user_id = 'your_user_id';-
启动开发服务器:
cd server pnpm dev -
测试上传功能
运行附件相关测试:
pnpm test attachments错误信息:EACCES: permission denied
解决方案:
sudo chmod -R 755 uploads/
sudo chown -R $USER:$USER uploads/错误信息:AI analysis failed
解决方案:
- 检查 API Key 是否正确
- 确认智谱AI账户余额
- 查看服务器日志
错误信息:File type not allowed
解决方案:
- 检查
ALLOWED_FILE_TYPES配置 - 确认文件MIME类型
- 如需支持新类型,更新配置
解决方案:
# 检查PostgreSQL状态
docker ps | grep postgres
# 查看数据库日志
docker logs cogniflow-postgres
# 测试连接
psql -U cogniflow_user -d cogniflow -c "SELECT 1"如果从旧版本升级附件功能:
- 备份数据
- 运行迁移脚本
- 更新配置文件
- 重启服务
# 备份
pg_dump -U cogniflow_user cogniflow > backup.sql
# 迁移
psql -U cogniflow_user -d cogniflow -f database/migrations/007_attachments_support.sql
# 重启
docker-compose restart server- 定期清理:定期清理未使用的附件文件
- 监控存储:监控存储空间使用情况
- 备份重要文件:定期备份用户上传的文件
- 限制大小:根据服务器配置合理设置文件大小限制
- HTTPS:生产环境使用HTTPS保护传输安全