惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
WordPress大学
WordPress大学
Help Net Security
Help Net Security
Jina AI
Jina AI
Security Latest
Security Latest
Y
Y Combinator Blog
Project Zero
Project Zero
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Know Your Adversary
Know Your Adversary
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
NISL@THU
NISL@THU
Cisco Talos Blog
Cisco Talos Blog
博客园 - 司徒正美
MyScale Blog
MyScale Blog
Cyberwarzone
Cyberwarzone
D
Docker
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
B
Blog
L
LangChain Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
SecWiki News
SecWiki News
The Hacker News
The Hacker News
C
Check Point Blog
L
Lohrmann on Cybersecurity
V2EX - 技术
V2EX - 技术
S
Securelist
T
Threat Research - Cisco Blogs
Stack Overflow Blog
Stack Overflow Blog
TaoSecurity Blog
TaoSecurity Blog
云风的 BLOG
云风的 BLOG
Latest news
Latest news
人人都是产品经理
人人都是产品经理
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Register - Security
The Register - Security
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
AWS News Blog
AWS News Blog
C
Cybersecurity and Infrastructure Security Agency CISA
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
T
Tailwind CSS Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
宝玉的分享
宝玉的分享
O
OpenAI News

蛋蛋之家

SUMIFS和LET函数——让 Excel 自己动起来 Halo 博客晚间卡顿排查记:从"玄学卡顿"到"真凶落网" 我用这个开源项目,把 AI 绘画提示词变成了"代码"——awesome-gpt-image-2 深度体验报告 群晖部署 LX Music Server:浏览器就是你的音乐播放器【详细版】 500道Word题库太痛苦?于是我写了个智能学习平台 别用一个人的奔跑,耗尽两个人的余生——《你凭什么认为我会一直喜欢你呢》 博客评论自动填充新方案:兼容 Vue/React 响应式绑定与跨架构填充逻辑 2026 生产级指南:Halo 2.x + PostgreSQL 自动化部署与性能优化手册 从 Typecho 转向 Halo 2.x:全能型 Nginx 架构与 SEO 无损迁移指南 Typecho 迁移 Halo 完整教程:数据库视图解决表前缀 + 自动提取封面图 + 去重检测 我的 CodeBuddy 装备库:218个技能全公开 + 使用心得 为博客添加自定义评论表情 Comment2Bark:Typecho评论推送到Bark插件 又拍云插件 UpyunFile v1.2 更新:修复 Typecho 1.3.0 兼容性问题 手把手修复RSS 403:从PHP警告到Cloudflare拦截的全链路排查 网站被镜像怎么办?2026年反镜像攻防实战指南 VLESS + Reality + Vision:2026 极致隐蔽节点搭建全解析 给OpenList和Alist加上液态玻璃效果,颜值直接拉满! 网页截图瞬间“赛博飞升”?手把手教你根治 Windows HDR 截图发白 群晖 NAS 影音终极方案:Docker Rclone + OpenList 完美挂载 Plex 全攻略 一个简洁高效的SVG图标库 告别重复劳动!一键填充评论的神奇书签脚本 - 蛋蛋之家 解锁思源笔记的隐藏力量:siyuan-patch 深度体验与技术实现 Oracle Cloud 自救指南:旧手机丢失后如何绕过 MFA 重新登录【更新2026年最新政策】 本站已加入“萌国ICP备案”联萌!😄 Excel 月报自动化指南:告别重复劳动,让数据主动为你服务 梦呓:为异地女友准备的2周年惊喜礼物 甲骨文云硬盘扩容指南:从50G到200G的“免费午餐”怎么吃? ⏰ 时间同步:当你的服务器开始“穿越”时,如何优雅地把它拉回现实 Typecho 又拍云文件管理插件修改版使用指南:新增自定义目录结构功能 华为鸿蒙6.0回退4.2记录 最近小公主情绪不佳 劳动节的家乡景色 烟台山公园一游 群晖搭建ChatGPT Web 推荐脚本:ChatGPT - 提示选择器 Activation Method for JetBrains Products (English version) JetBrains 系列产品激活方法 疫情三年后再进校园 修复searchEngineJump在谷歌搜索页面不生效问题 事情既然发生了,可以是遗憾,不要去后悔。 侄女的试唱会比赛 新一代图片编码格式测试 省科技馆之行 Typora Windows版破解补丁及主题推荐 在Typora中使用PicList上传图片 域名ICP备案之变更网站 Ubuntu 系统如何使用 root 用户登录 中国联通——让一切自由连不通 如何选购适合的口罩? 今天移动营业厅遇到一个小姐姐,真的好美 它不乐意 如何解决Typecho文章不是Markdown语法创建问题 探手抓住这一天的尾巴,为自己庆生 收到腾讯云自媒体分享计划2月份礼品 尝试百度Spider抓取异常问题 甲骨文DD重装系统及失联救砖教程 终于MrDoc升级v0.8.7成功了 Windows 端口查询及杀死进程 甲骨文实例开通与X-UI安装 国艺花鸟市场的悠闲 在思源笔记中使用群晖Synology C2对象存储服务 MrDoc升级v0.8.7失败 居居的手工作品 Linux系统时间同步命令小结 AList安装指南 宝塔面板降级 v7.7.0 及解除强制绑定手机、免费安装专业版插件的方法 修复群晖Synology Drive client右键菜单缺失问题 Windows11 展开折叠的右键菜单为传统模式 在 Windows 下批量将 Markdown 文档转为 Word 文档 Typecho的一些修改记录 Markdown语法——Mermaid 有两种新方案—CloudFlare官方免费CNAME接入教程 居居的新冠历程 群辉安装Transmission套件、增强汉化WebUI并备份做种列表 群晖 docker 部署思源笔记 Office for Mac 2019 License Installer 公众号通过api发送小程序消息 Windows 10下 iTunes 备份默认存储路径修改 Excel查找返回多个值,并将返回的值放在同一个单元格里面 七牛云测试域名失效后如何下载空间中的文件 入手三星860 evo 500g SSD固态硬盘 分享一套耐看的鼠标指针 如何重置OmniFocus数据库 Office for Mac 2016 License Installer Mac下配置终端+iTerm 2主题 如何制作苹果系统安装U盘 LNMP部署typecho,开启SSL、强制开启https Stylish样式如何设置为特定网址不生效? Typecho插件错误号:42S01的解决方法 电动车被偷了 热火 R150 上手开箱 UltraMon 3.3.0 汉化+注册机 如何用 MWeb 发布 Typecho 文章 测试 Mweb 发布到印象笔记功能 忘记了iPhone访问限制的密码该怎么办? 新玩具KAREE电子烟,先试试 Mac mini 2011 开启Handoff方法 见微知著 浅谈手游创新 PhoneClean Pro授权注册激活码
Typecho 多吉云插件优化:更灵活的存储目录配置
吴蛋蛋 · 2026-01-22 · via 蛋蛋之家

基于两双筷子原版插件优化,在保持稳定性的基础上增加存储路径自定义功能

之前有过一篇又拍云的,大家可以去看看:

📦 核心改进:存储路径的自定义化

1. 从预设模式到动态配置

原版插件提供了两种固定路径格式,但在实际使用中,站长们有更多样化的存储需求:

  • 统一管理多个网站资源:一个多吉云账号管理多个网站
  • 符合现有CDN配置规则:适应已有的CDN缓存策略
  • 保持与旧系统的路径兼容:从其他平台迁移时保持路径结构
  • 按内容类型分类存储:图片、文档、视频分开存放

优化后

  • ✅ 完全可配置的存储根目录
  • ✅ 支持任意自定义路径结构
  • ✅ 自动兼容原有配置模式
  • ✅ 提供平滑的迁移路径
  • ✅ 智能路径格式化处理

2. 🌟 实际应用场景

🏠 个人博客    → 使用 /uploads 简洁明了
🏢 企业网站   → 使用 /static 分类清晰
🔧 多站点管理 → 使用 /site1/uploads /site2/uploads 隔离管理
🔄 迁移用户   → 使用 /typecho/uploads 保持原路径
📊 内容平台   → 使用 /images /videos /docs 按类型分类

🔧 技术实现亮点

1. 可配置的存储目录

// 🎯 原版:固定两种模式(二选一)
if ($pluginConfig['path_style'] == 'typecho') {
    $uploadPath = self::getUploadDir().$uploadPath;
}
// 只能选择:Typecho风格 或 极简风格

// ✨ 新版:动态配置(自由定义)
$customDir = $pluginConfig['custom_dir'] ?? '/files';
$uploadPath = $customDir . '/' . $date->year . '/' . $date->month . '/' . $date->day;
// 可以填写:/uploads、/static、/typecho/uploads 等任意路径

2. 严格的输入验证

public static function configCheck($settings) {
    // 🔒 必填项检查
    if (empty($settings['custom_dir'])) {
        throw new Exception('存储目录不能为空');
    }
  
    // 📝 格式验证
    if (!str_starts_with($settings['custom_dir'], '/')) {
        throw new Exception('存储目录必须以斜杠(/)开头');
    }
  
    // 🛡️ 安全字符检查
    if (preg_match('/[<>:"|?*]/', $settings['custom_dir'])) {
        throw new Exception('存储目录包含非法字符');
    }
  
    // 📊 路径深度限制(防止过深路径)
    $depth = substr_count($settings['custom_dir'], '/') - 1;
    if ($depth > 5) {
        throw new Exception('存储目录层级过深,建议不超过5级');
    }
}

3. 📋 配置示例

# 配置:/uploads
# 实际路径:/uploads/2026/01/22/filename.jpg
# 适合:个人博客、简单站点

# 配置:/typecho/uploads  
# 实际路径:/typecho/uploads/2026/01/22/filename.jpg
# 适合:从原版升级、保持路径一致

# 配置:/static/images
# 实际路径:/static/images/2026/01/22/filename.jpg
# 适合:企业网站、资源分类

# 配置:/site/blog/uploads
# 实际路径:/site/blog/uploads/2026/01/22/filename.jpg
# 适合:多站点、子站点管理

# 配置:/
# 实际路径:/2026/01/22/filename.jpg
# 适合:极简主义、根目录存储

📂 存储路径命名指南

1. 推荐命名方案

📁 个人博客推荐:/uploads
📁 企业网站推荐:/static
📁 多站点推荐:/site/[id]/uploads
📁 Typecho老用户:/typecho/uploads
📁 资源分类推荐:/images、/docs、/videos
📁 日期优先推荐:/2026/uploads

2. ✅ 命名最佳实践

  1. 使用小写字母:避免大小写敏感问题(Linux/Windows差异)
  2. 使用连字符而非下划线/my-files/my_files更友好
  3. 保持简洁:建议不超过3级深度,便于管理
  4. 语义明确:路径名能反映内容类型,便于识别
  5. 避免保留字:不要使用系统保留目录名
  6. 英文优先:中文路径可能在某些系统上有兼容性问题

3. ❌ 避免这样写

/files/uploads           # 重复了"uploads",冗余
/my uploads             # 包含空格,可能引发问题
/uploads/               # 末尾不要加斜杠
/../../etc              # 危险路径,安全风险
/CONFIG                 # 全大写,不美观
/2026-01-22/files       # 包含特殊字符

🔄 从原版升级

1. 配置对应关系

如果你正在使用原版插件,升级时只需对应填写:

原版选项 新版填写值 说明
Typecho风格 /typecho/uploads 保持原路径不变
极简风格 / 根目录存储

2. 📋 升级步骤

# 第一步:备份
1. 备份当前插件配置(截图或记录)
2. 备份重要上传文件(以防万一)

# 第二步:安装新版
1. 下载新版插件文件
2. 上传到 /usr/plugins/DogeUpload/
3. 覆盖原有文件(保留配置)

# 第三步:修改配置
1. 进入Typecho后台 → 插件管理
2. 找到DogeUpload插件,点击"设置"
3. 根据原配置填写"存储目录"
   - 原Typecho风格 → 填写:/typecho/uploads
   - 原极简风格 → 填写:/
4. 其他配置保持不变
5. 点击"保存"

# 第四步:验证测试
1. 上传一个测试文件
2. 检查文件是否出现在正确路径
3. 查看文章中图片显示是否正常

⚠️ 重要提醒

  1. 已上传文件不受影响:修改存储目录仅对新上传文件生效,已存在的文件保持原路径
  2. 手动迁移需要:如需统一所有文件路径,需要手动迁移并更新数据库引用
  3. CDN配置同步:如果使用CDN,确保CDN回源配置支持新路径
  4. 测试环境先行:建议在测试环境验证无误后再应用到生产环境
  5. 路径一旦确定:尽量避免频繁修改,以免造成路径混乱

❓ 常见问题

Q:改了存储目录,旧文章的图片会失效吗?

A:不会失效。插件会保持旧图片的原始路径,只有新上传的图片使用新路径。

Q:可以随时修改存储目录吗?

A:技术上可以,但建议在访问量低时修改,修改后立即测试上传功能。

Q:填写的路径在存储桶中不存在怎么办?

A:插件会自动创建所需的目录结构,无需手动在多吉云创建。

Q:支持中文目录名吗?

A:技术上支持,但强烈建议使用英文路径,兼容性更好,不易出问题。

Q:如何查看当前文件的实际存储路径?

A:上传文件后,可以在 Typecho 后台的 "附件管理" 中查看文件路径。

Q:修改后上传失败怎么办?

A:检查:① 路径是否以/开头;② 是否包含非法字符;③ 多吉云 API 配置是否正确。

Q:可以设置多级目录吗?比如 /year/month/category/****?

A:目前插件自动添加年月日三级,你可以在配置中设置基础目录,如 /blog/images,最终路径会是 /blog/images/2026/01/22/

🎯 总结

这次优化虽然改动不大,但解决了一个很实际的问题:让存储结构适应你的需求,而不是让你去适应固定的结构

优化带来的好处:

  • 对新手友好:默认/files开箱即用,无需复杂配置
  • 对老用户兼容:支持原版配置无缝迁移,零学习成本
  • 对专业用户灵活:完全自定义存储层级,适应各种架构
  • 对未来可扩展:为更多存储策略和功能扩展打下基础

设计理念:

  1. 简洁至上:一个配置项解决路径问题
  2. 稳定优先:不影响已有功能,不破坏现有数据
  3. 智能辅助:自动格式化路径,减少配置错误
  4. 开放灵活:不限制用户的使用方式

优化虽小,但实用性强。这个改进来源于实际使用中的需求,希望能让大家的 Typecho 多吉云存储体验更加顺畅、灵活!


插件信息

  • 基于版本:两双筷子原版 DogeUpload
  • 优化重点:存储路径自定义
  • 兼容性:完全兼容原版配置和数据
  • 适用场景:所有使用多吉云存储的Typecho用户

如果你在使用中遇到任何问题,或者有改进建议,欢迎交流讨论。希望这个优化能帮助到更多 Typecho 站长! 🚀