# 七牛云 OSS 上传 将本地文件上传到七牛云 CDN 存储。 ## 使用方式 用户会提供: 1. **file_path**:要上传的本地文件路径(支持单个文件或目录) 2. **prefix**:OSS 存储路径前缀(可选,默认 `self-media/`) ## 执行步骤 1. 激活项目虚拟环境:`source .venv/bin/activate` 2. 使用七牛 Python SDK 上传文件 3. 返回 CDN 访问链接 ## 单文件上传 ```bash source .venv/bin/activate && python -c " from qiniu import Auth, put_file import os AK = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0' SK = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC' BUCKET = 'union-saas' CDN = 'https://cdn.union.jxyunge.com' local_path = '本地文件路径' key = 'self-media/远程存储路径' q = Auth(AK, SK) token = q.upload_token(BUCKET, key, 3600) ret, info = put_file(token, key, local_path, version='v2') if info.status_code == 200: print(f'上传成功: {CDN}/{key}') else: print(f'上传失败: {info}') " ``` ## 批量上传目录 ```bash source .venv/bin/activate && python scripts/upload_qiniu.py ``` 脚本 `scripts/upload_qiniu.py` 会上传 `articles/001/images/` 下所有 PNG 文件。 ## 自定义批量上传 ```bash source .venv/bin/activate && python -c " from qiniu import Auth, put_file import os, glob AK = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0' SK = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC' BUCKET = 'union-saas' CDN = 'https://cdn.union.jxyunge.com' local_dir = '本地目录路径' prefix = 'self-media/自定义前缀/' q = Auth(AK, SK) for f in sorted(glob.glob(os.path.join(local_dir, '*'))): name = os.path.basename(f) key = prefix + name token = q.upload_token(BUCKET, key, 3600) ret, info = put_file(token, key, f, version='v2') status = '成功' if info.status_code == 200 else '失败' print(f'[{status}] {name} -> {CDN}/{key}') " ``` ## 在 Markdown 中替换图片链接 上传后,将文章中的本地图片路径替换为 CDN 链接: - 本地路径格式:`![alt](本地路径/xxx.png)` - CDN 链接格式:`![alt](https://cdn.union.jxyunge.com/self-media/xxx.png)` ## 七牛凭证 | 配置项 | 值 | |--------|------| | 上传地址 | `https://up-z0.qiniup.com` | | AK | `t1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0` | | SK | `KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC` | | CDN 域名 | `https://cdn.union.jxyunge.com` | | 空间名 | `union-saas` | ## 注意事项 - 虚拟环境 `.venv/` 已安装 `qiniu` SDK - 上传同名文件会覆盖 - CDN 链接格式:`https://cdn.union.jxyunge.com/{key}` $ARGUMENTS