mcpField
F
file-upload-handling

file-upload-handling

github.com/aj-geddes开发373480 次安装34 周前更新
代码仓库

关于 file-upload-handling

面向开发者的文件上传技能,介绍如何在不同后端框架中构建安全的上传系统,涵盖验证、扫描、存储与交付,并提供多种实现参考。

主要功能

  1. 01文件类型与大小验证
  2. 02文件名清理
  3. 03病毒扫描指南
  4. 04存储与访问控制
  5. 05CDN 交付与签名 URL
  6. 06后端及云存储参考

适用场景

  1. 01为应用添加上传功能
  2. 02管理用户文档
  3. 03提供媒体文件服务
  4. 04构建批量导入流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill file-upload-handling

安装后在 Claude Code 中输入/file-upload-handling确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
fastapi-file-upload.md
nodejs-express-file-upload-with-multer.md
pythonflask-file-upload.md
s3cloud-storage-integration.md
scripts/
validate-pipeline.sh
templates/
pipeline.yaml

详细介绍

文件上传处理

目录

概述

借助验证、净化、病毒扫描、高效的存储管理、CDN 集成和适当的文件提供机制,在不同的后端框架中构建安全、可靠的文件上传系统。

适用场景

  • 实现文件上传功能
  • 管理用户上传的文档
  • 存储和提供媒体文件
  • 实现个人资料图片上传
  • 构建文档管理系统
  • 处理批量文件导入

快速开始

最小可运行示例:

# config.py
import os

class Config:
    MAX_CONTENT_LENGTH = 50 * 1024 * 1024  # 50 MB
    UPLOAD_FOLDER = 'uploads'
    ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'docx', 'doc'}
    UPLOAD_DIRECTORY = os.path.join(os.path.dirname(__file__), UPLOAD_FOLDER)

# file_service.py
import os
import mimetypes
import hashlib
import secrets
from werkzeug.utils import secure_filename
from datetime import datetime
import magic
import aiofiles

class FileUploadService:
    def __init__(self, upload_dir, allowed_extensions, max_size=50*1024*1024):
        self.upload_dir = upload_dir
        self.allowed_extensions = allowed_extensions
        self.max_size = max_size
        self.mime = magic.Magic(mime=True)
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
Python/Flask 文件上传Python/Flask 文件上传
Node.js Express 使用 Multer 上传文件Node.js Express 使用 Multer 上传文件
FastAPI 文件上传FastAPI 文件上传
S3/云存储集成S3/云存储集成

最佳实践

✅ 应该做
  • 验证文件扩展名和 MIME 类型
  • 在处理前检查文件大小
  • 使用安全的文件名,防止目录遍历
  • 将文件存储在 Web 根目录之外
  • 实施病毒扫描
  • 使用 CDN 分发文件
  • 为直接访问生成签名 URL
  • 记录文件上传/下载事件
  • 实施访问控制检查
  • 清理临时文件
❌ 不要做
  • 信任用户提供的文件名
  • 将文件存储在 Web 可访问的目录中
  • 允许任意文件类型
  • 跳过对上传文件的病毒扫描
  • 暴露绝对文件路径
  • 允许无限制的文件大小
  • 忽略访问控制
  • 使用可预测的文件路径
  • 在文件名中存储敏感元数据
  • 忘记验证文件内容

评论

支持 Markdown