资讯动态

Nextcloud 打包下载:共享链接如何变成一个 ZIP

发布时间:2026/9/2 13:06:54 来源:尧图企业网站定制
Nextcloud 打包下载共享链接如何变成一个 ZIP【免费下载链接】server☁️ Nextcloud server, a safe home for all your data项目地址: https://gitcode.com/GitHub_Trending/se/server你正要把整个项目文件夹通过共享链接发给同事浏览器地址栏里却只能逐个点开文件。Nextcloud 打包下载就是为这种场景准备的服务器对文件夹做一次 Nextcloud 文件压缩浏览器拿到的只有一个 ZIP。本文顺着源码把这条链路讲清楚再给出几个空间优化的实际手段。从共享页到 ZIP这条链路能做什么先说结论这不是一个独立功能而是一串接力。入口是 apps/files_sharing/ 里的 ShareController负责校验共享令牌有没有读权限再把请求改写成 DAV 端点地址。DAV一种让浏览器把服务器目录当文件系统浏览的 WebDAV 协议由 apps/dav/ 中的 Sabre 服务器承接真正的打包在 ZipFolderPlugin 插件里完成GET 请求落到目录上、且 Accept 声明接受 zip 或 tar 时插件接管请求把文件读入内存流边压缩边写给浏览器。它不落盘生成物理 ZIP 文件大目录全程流式传输中断就要重来。最短操作路径共享链接触发 ZIP用户侧只感知到三步但前提是共享开了下载权限把下载关掉之后这条链路会直接返回 404源码里对 hideDownload 状态有专门判断是排查时容易被忽视的一环。它也不做分片断点续传大目录下载中断只能从头再来。最短路径如下文件页选中文件夹点共享创建允许下载的公共链接。打开该共享链接进入共享页。点下载按钮浏览器带 acceptzip 请求 DAV 端点ZIP 开始流式下载。补充一句在文件页按住 Ctrl 多选文件再点下载构造的也是同一条 DAV 打包链路只是入口不同不再单独展开。空间与性能调优按现象对照处理打包下载是流式的文件从存储读入内存、压缩、立刻写给浏览器磁盘上不留完整 ZIP 副本。所以空间大户通常不是压缩临时文件而是文件版本、预览缓存和历史备份。对照下表处理即可问题现象调整手段涉及路径历史版本占用大量配额缩短版本保留周期过期版本由后台任务删除apps/files_versions/大目录下载中断需整包重来分批下载Mac 端可改用 tar速度更快apps/dav/lib/Connector/Sabre/ZipFolderPlugin.php缓存、旧备份堆积确认 cron 正常让后台任务定期清理core/BackgroundJobs/版本保留策略在管理员设置里调整即可不需要改代码动手清理前先用 occ background:cron 确认后台任务在正常跑。代码导读downloadShare 只做了两件小事// apps/files_sharing/lib/Controller/ShareController.php 节选 if ($node instanceof Folder) { $params[accept] zip; // 关键行标记要 ZIP } $davUrl /public.php/dav/files/ . $token . $davPath; return new RedirectResponse($this-urlGenerator-getAbsoluteURL($davUrl)); // 302 改道到 DAV这几行做的事很克制目标只是文件夹时才追加 acceptzip单个文件不需要打包、直接按原路径走控制器随后不亲自吐内容而是构造 public.php/dav/files/ 下的绝对地址并 302 重定向把压缩工作完整交给 DAV 侧。方法头部的 deprecated 注释也说明官方建议直接使用 DAV 端点这段逻辑主要为兼容旧链接保留。理解共享控制器改道 DAV 流式压缩这条链路后下载慢、空间涨这类问题基本都能定位到具体模块。ShareController 源码ZipFolderPlugin 打包插件Streamer 流式压缩器文件版本管理模块后台清理任务【免费下载链接】server☁️ Nextcloud server, a safe home for all your data项目地址: https://gitcode.com/GitHub_Trending/se/server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价